{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 预测顾客天猫双十一优惠券使用情况"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 一、数据预处理\n",
    "* 二、变量选择\n",
    "* 三、建模\n",
    "* 四、模型评估"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**数据字段说明**\n",
    "* ID\t       记录编码\n",
    "* age\t       年龄\n",
    "* job\t       职业\n",
    "* marital\t    婚姻状态\n",
    "* default\t    花呗是否有违约\n",
    "* returned\t 是否有过退货\n",
    "* loan\t    是否使用花呗结账\n",
    "* coupon_used_in_last6_month\t过去六个月使用的优惠券数量\n",
    "* coupon_used_in_last_month\t过去一个月使用的优惠券数量\n",
    "* coupon_ind\t           该次活动中是否有使用优惠券"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "#导入要使用的模块\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.metrics import mean_absolute_error\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import r2_score\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn import metrics\n",
    "import seaborn as sns\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif']=['SimHei']\n",
    "#⽤来正常显示中⽂标签\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "#⽤来正常显示负号 #有中⽂出现的情况，需要u'内容'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入数据\n",
    "data = pd.read_csv(r'C:\\Users\\Administrator\\Desktop\\U09_0422 逻辑回归\\L2_Week3.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>age</th>\n",
       "      <th>job</th>\n",
       "      <th>marital</th>\n",
       "      <th>default</th>\n",
       "      <th>returned</th>\n",
       "      <th>loan</th>\n",
       "      <th>coupon_used_in_last6_month</th>\n",
       "      <th>coupon_used_in_last_month</th>\n",
       "      <th>coupon_ind</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>43</td>\n",
       "      <td>management</td>\n",
       "      <td>married</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>42</td>\n",
       "      <td>technician</td>\n",
       "      <td>divorced</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>47</td>\n",
       "      <td>admin.</td>\n",
       "      <td>married</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>management</td>\n",
       "      <td>single</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>42</td>\n",
       "      <td>technician</td>\n",
       "      <td>divorced</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   ID  age         job   marital default returned loan  \\\n",
       "0   1   43  management   married      no      yes   no   \n",
       "1   2   42  technician  divorced      no      yes   no   \n",
       "2   3   47      admin.   married      no      yes  yes   \n",
       "3   4   28  management    single      no      yes  yes   \n",
       "4   5   42  technician  divorced      no      yes   no   \n",
       "\n",
       "   coupon_used_in_last6_month  coupon_used_in_last_month  coupon_ind  \n",
       "0                           2                          0           0  \n",
       "1                           1                          1           0  \n",
       "2                           2                          0           0  \n",
       "3                           2                          0           0  \n",
       "4                           5                          0           0  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看数据\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(25317, 10)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看数据形状\n",
    "data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ID                            0\n",
       "age                           0\n",
       "job                           0\n",
       "marital                       0\n",
       "default                       0\n",
       "returned                      0\n",
       "loan                          0\n",
       "coupon_used_in_last6_month    0\n",
       "coupon_used_in_last_month     0\n",
       "coupon_ind                    0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看数据是否为空值\n",
    "data.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.883043\n",
       "1    0.116957\n",
       "Name: coupon_ind, dtype: float64"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#coupon_ind为要预测的目标值\n",
    "#查看目标值的分布情况\n",
    "data['coupon_ind'].value_counts(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看特征值与目标值之间的相关关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_8464\\14012877.py:3: FutureWarning: The default value of numeric_only in DataFrame.corr is deprecated. In a future version, it will default to False. Select only valid columns or specify the value of numeric_only to silence this warning.\n",
      "  sns.heatmap(data.corr()[['coupon_ind']])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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V6/Wj370I5WVlSktLU1PPvmk9uzZoz179ujFF1+8ZnybzaaGhgano8Ug/zIDAHxEi909hwFQqMJwSkpKlJmZqSNHjqixsVEHDx6UJBUXF+t73/uehg0bpsGDB6uiokLh4eHasGGDvvWtb+nRRx9V//79lZ6ero0bN14zdm5uriwWi9NRd+brzrw8AADw/7GZCobSpUsXLVmyRK+99pr69eun2NhYNTc3S5IGDBigTz/9VD169NChQ4c0ePBgSdKxY8dUVFSksLAwSdLFixcVHBx8zfhZWVnKzMx0eu/b/e66adcDAICr7AbphroDhSoMJT8/XytWrNDhw4fVu3dvbd26VXv27JEkDRkyRL/4xS/02GOP6YknntDw4cMlSVFRUZo8ebIWL14sSWpubtaZM2euGd9sNstsNju918XExAMAwItQqALeqampSZJUX1+vw4cPKzMzU3a7XV999ZU++OADffzxx7JYLIqOjnaMmTp1qpYtW6ZDhw4pISFBv/vd7/TJJ5+osLDQU5cBAAA6gFYRDGXChAmaPHmyvv3tbys9PV2PPfaYqqurddttt6l379668847FR8fr65duyo9PV2S1K9fP61Zs0aZmZkaMmSISktLtWHDBg9fCQAA16mlxT2HAZjsdrvv9I9xy1q1apX++te/6rXXXlO3bt1UUlKiiRMn6sSJEwoNDb2h2AN7/pubsgQA3OoOnrz5s3WNj9/rljghL29zS5ybial/3BLuvvturV+/XomJiTp79qzi4+P129/+9oaLVAAAvA5rVAFjiY+P13//9397Og0AAOBGFKoAAAAG4kurNilUAQAAjMSHpv7Z9Q8AAACvREcVAADASHyoo0qhCgAAYCC+9AhVpv4BAADgleioAgAAGIkPdVQpVAEAAIzEGE8/dQum/gEAAOCV6KgCAAAYiC9tpqJQBQAAMBIKVQAAAHgl1qgCAAAAnkVHFQAAwEBYowoAAADvxNQ/AAAA8L9KS0uVlJSk8PBwzZ07V3Z7xzu7Dz30kH7+85+7fE4KVQAAAAOxt9jdcrjCZrPp/vvv14gRI1RYWKh9+/bJarV2aOw777yj9957TwsXLnT5WilUAQAAjKTFTYcLtm3bpvr6ei1ZskT9+/fXokWLtGrVqnbHnT17Vo8//rjy8vIUFhbm2klFoQoAAOCTbDabGhoanA6bzXbN75aUlCg5OVndunWTJA0bNkz79u1r9xwLFy7U2bNn5e/vr/fee8+l5QIShSoAAICh2Fvcc+Tm5spisTgdubm51zxnQ0OD4uPjHa9NJpP8/PxUV1fXap6VlZVasmSJBgwYoMrKSs2dO1cPPvigS8Uqu/4BAACMxE27/rOyspSZmen0ntlsvuZ3/f39r/osKChIZ86cUXh4+DXHWK1W9e7dW++++67MZrPmzJmj2NhYvfvuuxo3blyHcqRQBQAA8EFms7nVwvRKERERKi0tdXqvsbFRgYGBrY6pqqrSv//7vzvOERISooSEBJWXl3c4R6b+AQAADMRdU/+uSEpKUkFBgeN1RUWFbDabIiIiWh0THR2ts2fPOl63tLSoqqpKsbGxHT4vhSoAAICReGDX/5gxY1RfX6+1a9dKkvLy8jR27Fj5+fmpoaFBFy5cuGrMD3/4Q23atElvvvmmqqqqlJWVJZvNptGjR3f4vBSqAAAABuKJjqq/v79Wrlyp9PR09e7dW3/729+Ul5cn6dIdALZs2XLVmNtvv11vvPGGXnjhBSUkJGjLli16++23FRIS0uHzmuyu3icA8DEDe/6bp1MAABjEwZOFN/0cJ++50y1xer670+Uxx44dU2FhoUaNGqWePXu6JY+2sJkKAADAQFzthrpTZGSkIiMjO+18FKoAAAAG4slCtbOxRhUAAABeiY4q0I6v6ms8nQIAAP/LbvJ0Bp2GQhUAAMBAmPoHAAAAPIyOKgAAgIHYW5j6BwAAgBdi6h8AAADwMDqqAAAABmJn1z8AAAC8kS9N/VOoAgAAGIgvbaZijSoAAAC8Eh1VAAAAA7HbPZ1B56FQBQAAMBCm/gEAAAAPo6MKAABgIL7UUaVQBQAAMBBfWqPK1D8AAAC8Eh1VAAAAA2HqHwAAAF7Jlx6hytQ/AAAAvBIdVQAAAAOxt3g6g85DoQoAAGAgLT409U+hCgAAYCCsUQUAAAA8jI4qAACAgXB7KgAAAHglnkwFAAAAeBgdVQAAAANh6h8AAABeyZduT8XUPwAAALwSHVUAAAAD8aX7qFKoAgAAGAi7/gEAAAAPo1B1M6vVqrvuuuumfd9TMdty9uxZ9evXT2+++WanndMVM2bMUHZ2tqfTAADALVrsJrccRkCh6mEPP/ywNm/e7Ok02lRRUSGTqfVf6JycHA0YMEDf+973OjGrq7WXJwAAtwK73eSWwwhYo+phgYGBCgwM9HQa1620tFS///3vtWfPHk+nAgCAT2CNahv27t2rlJQUBQcHa/To0friiy8kXSpYUlNTZbFYNHHiRFVVVUmS8vPzFRcX5xTDZDKpoqJCVqtVI0eOVFpamiwWiyZMmKCamhrH99qLuXHjRsXGxio8PFzLli1rN/e2cpGkHTt2aNCgQerWrZtGjx6tsrIyx/e2b9+uoUOHKiwsTLNmzZLNZnN8tnDhQvXs2VMDBgxQUVFRh3+W0rWn6bOzszVjxgwtWLBAYWFhio2N1YcffuhS3Gt55ZVXFB0drZCQED3wwANqbGx0fLZ48WL16dNHoaGhmjp1quP6goKCFB8fL+nSz8pkMqmgoECSZLfbNXv2bI0aNUoFBQUqLS1tN4fLXc+nn35avXr10vLlyzV48GANGTJETU1NkqQ//OEPiouLU9++fZWdna2WlhZJl6bw58+fr5/97GcKDg7W4MGDtX///nbzlKTm5uZrjgMAAN7LpUK1oaFBEyZM0OTJk3XgwAElJydr2rRpampq0rhx43TPPffo888/V3R0tNLS0hwFRls+++wzpaSkqLi4WGazWenp6ZLUbsza2lrl5eVpy5YtysnJ0dy5c3X27Nnr+BH8r+nTp2vmzJk6ePCgEhMTNW/ePElSWVmZ0tLS9OSTT2rPnj3as2ePXnzxRUnSxo0b9dJLL+nNN9/U2rVrtW7duhvK4bKtW7fq8OHDKioq0ujRo/XLX/7yhuL94x//0BNPPKHVq1dr//79OnHihF5++WVJ0pdffqlnn31Wb7zxhoqKinT48GFZrVZJ0vHjx1VSUiJJqqurU11dnZKSkiRJf/3rX/XJJ5+ob9++Onz4sMaPH6+XXnqpQ/nExsZq3Lhxys7O1p///GcdPXpUJSUlevPNN5WTkyOr1arNmzdr3bp1Tn8JefXVVxUcHKzS0lL16tVLubm57ebZ1rgr2Ww2NTQ0OB12X/qrKwDA6/nSGlWXpv43b96siIgIZWVlSZLmzZunkSNHatOmTQoJCdHzzz8vSVq2bJl69uyp3bt3txszKipKzzzzjEwmk7Kzs5WUlKSLFy+2G7OpqUkrVqxQYmKiBg4cqDlz5ujEiROKjY116Qfwr7p27SqbzSaLxaJXXnnFURRv2LBB3/rWt/Too49KktLT07Vq1SrNmzdPb731lqZNm6YxY8ZIkmbNmqVdu3Zddw6X+fn5aeXKlQoKCtKMGTM0e/bsG4qXkJCgr7/+WgEBAdq9e7fsdrsOHjwo6VI3UrpUpMXExDjlb7FYFBoaKkkKCwtzivnqq69qypQpWrNmjSTp3nvv1d13361Zs2YpJCSkzXwee+wx1dbWauzYsRoxYoQiIiJ04cIFrVy5UhkZGY4uc05OjhYsWKCMjAxJl35ffv3rX0u6tL53w4YN7ebZ1rgr5ebmKicnx+k9U5dgmfxC27weAAA6i1HWl7qDSx3Vqqoqp6nz8PBwTZkyRUePHnVMu0qS2WxW3759dfTo0atinDlzxul1VFSUYwNMZGSkmpubVVtb227M8PBwDR8+XJIcazxd7XxdmcuGDRuUn5+vPn36KDU11TGNf+zYMRUVFSksLExhYWF66qmnVFlZKUmqqalRdHS0I0a/fv1cyqE1KSkpjgIyMDDwhrt6Z8+e1axZsxQXF6fc3Fz5+/urublZkhQXF6fXXntNzz77rLp3764pU6bo1KlT7casqqrSxIkTHa+//e1v6/z586qurm537OVru/zPy44ePer0M+zXr5/T79G/LpNw5efS0XFZWVmqr693Okxd2i66AQDAzeFSoRodHa3y8nLH66amJiUmJiomJsbp/XPnzqm6uloxMTEymUyOgkiSCgsLnWJWVlY6OpeVlZXy9/dXjx492owpydE9c0VbuZw+fVqnT5/Wu+++q3/+85/6zne+4+igRkVFafLkySouLlZxcbFKSkr07rvvSpJ69erlVJhdLmBv1PVcX1t+97vf6eTJkzp+/Ljee+89paSkOD6rqqrSsGHDtGfPHlVWVqqurk4LFy50fN6ly6VfkyuLu+joaKflFkeOHJHJZHIq3F0VExOjr776yvG6rKzM8Wcutf1zaS3P9sb9K7PZrNDQUKeDOwkAALyJL039u1SoTpo0SXV1dVq0aJGqqqr0wgsvqLm5WZMmTVJjY6NycnJ05MgRzZkzRwkJCUpKSlJUVJRqampUVlam06dPX3U/y+rqauXm5qq8vFwLFixQWlqa/Pz8dN9997Ua83q1lUtLS4smTZqk119/XadOnVKXLl0cBfTUqVP14Ycf6tChQ5IuFX2PPPKIJCktLU3r1q3TJ598ol27dumPf/zjded3MzU1Nclut+vUqVNav369VqxY4Sjo9u3bp3vvvVcff/yxTp8+LZPJ5LS+uE+fPrrtttu0adMmHTlyxLFJ6eGHH9aLL76o3bt369ChQ/rFL36he+65R926dbvuPH/yk59o6dKl2rlzp/bu3avs7GzHuuX2tJYnAAC3ErubDiNwqVANDQ3V9u3btWnTJg0aNEgFBQV66623FBISonfeeUc7duzQ0KFDVVlZqbfffltdunRR//79lZGRodTUVKWmpjo2KF2WnJysvXv36o477tD58+e1fPlySVJwcHCrMa9XW7mEhITo9ddf169+9Sv1799fmzZt0ooVKyRdmn5es2aNMjMzNWTIEJWWljrWOD744IN6/PHHlZaWph//+MdKS0u77vxupjlz5shut2vgwIFavXq1Zs6cqeLiYknSuHHjNHv2bP3gBz/QwIEDZbfbnTZvBQQE6LXXXtNPf/pTDR48WH//+98lSTNnztTs2bP1wx/+0LEM4/ImrOv14IMP6rnnntP06dM1ceJETZs2TT//+c87NLa1PAEAgDGZ7B7c0my1WmW1WpWfn++pFIB2+QdGejoFAIBBXDx/7Kaf45M+7nnAzqga73yi5L+65Z5MdXnD05XHyJEjOzWPjz76qNVcMjMzvSbmzbB+/fpW81y6dKmn0wMAwNB86clUHu2o3gyXb95/pYCAAEVGdl5n7Ny5c/r666+v+VlISIi6d+/uFTFvhqamplbvGhAeHi6LxdLJGd0YOqoAgI7qjI7qx9/4vlvijP76b26JczPdco9QvfLJU54SFBTk9lxuRsybITg4WMHBwZ5OAwCAW1L7j1O6ddxyhSoAAMCtzC5jTNu7A4UqAACAgbTcUos223bLbaYCAADArYGOKgAAgIG0MPUPAAAAb+RLa1SZ+gcAAIBXoqMKAABgINyeCgAAAF6JqX8AAADAwyhUAQAADKTFTYerSktLlZSUpPDwcM2dO1d2e8dv6HrhwgUNHTpU+fn5Lp2TQhUAAMBAPFGo2mw23X///RoxYoQKCwu1b98+Wa3WDo//zW9+o9LSUhfPSqEKAACAdmzbtk319fVasmSJ+vfvr0WLFmnVqlUdGnvo0CEtXrxYcXFxLp+XzVQAAAAG4q7NVDabTTabzek9s9kss9l81XdLSkqUnJysbt26SZKGDRumffv2deg8s2fP1rPPPqtt27a5nCMdVQAAAANpMbnnyM3NlcVicTpyc3Ovec6GhgbFx8c7XptMJvn5+amurq7NXFevXq36+no99dRT13WtdFQBAAAMxF2PUM3KylJmZqbTe9fqpkqSv7//VZ8FBQXpzJkzCg8Pv+aYkydPKisrS9u3b5e///WVnBSqAAAAPqi1af5riYiIuGozVGNjowIDA1sdk5GRoZkzZ+qOO+647hyZ+gcAADAQu5sOVyQlJamgoMDxuqKiQjabTREREa2OWb9+vX7/+98rLCxMYWFh+uijj3TfffcpLy+vw+elowoAAGAgnniE6pgxY1RfX6+1a9dq+vTpysvL09ixY+Xn56eGhgZ17dpVAQEBTmPKy8udXj/00EPKyMjQhAkTOnxeClUAAAC0yd/fXytXrtTDDz+suXPnqrm5WTt37pR06Q4AS5cu1QMPPOA05srbUQUFBekb3/iGwsLCOnxek92VxwoAPsg/MNLTKQAADOLi+WM3/Rx/6zPNLXG+X7PO5THHjh1TYWGhRo0apZ49e7olj7bQUQUAADAQT3YYIyMjFRnZeQ0cNlMBAADAK9FRBQAAMBBPbKbyFApVAAAAA2lxz/3+DYGpfwAAAHglOqoAAAAG4q5HqBoBhSoAAICB+NJ9RSlUAQAADMSX1qhSqALtuKt3oqdTAADAJ1GoAgAAGAi3pwIAAIBX8qU1qtyeCgAAAF6JjioAAICBsJkKAAAAXsmX1qgy9Q8AAACvREcVAADAQHypo0qhCgAAYCB2H1qjytQ/AAAAvBIdVQAAAANh6h8AAABeiUIVAAAAXoknUwEAAAAeRkcVAADAQHgyFQAAALySL61RZeofAAAAXomOKgAAgIH4UkeVQhUAAMBA2PUPAAAAeBgdVQAAAANh1z8AAAC8ki+tUWXqHwAAAF6JjioAAICB+NJmKgpVAAAAA2nxoVKVQhUAAMBAWKMKAAAAeBgdVQAAAAPxnYl/ClUAAABDYeofAAAA8DA6qgAAAAbCk6kAAADglXzp9lRM/Xciq9Wqu+6666Z931Mxvd2MGTOUnZ3t6TQAAICLKFS92MMPP6zNmzd7Oo02VVRUyGTyjjkIb8oFAICbxe6mwwiY+vdigYGBCgwM9HQaAADAi7Dr/zrt3btXKSkpCg4O1ujRo/XFF19IkkpLS5WamiqLxaKJEyeqqqpKkpSfn6+4uDinGCaTSRUVFbJarRo5cqTS0tJksVg0YcIE1dTUOL7XXsyNGzcqNjZW4eHhWrZsWbu5t5WLJO3YsUODBg1St27dNHr0aJWVlTm+t337dg0dOlRhYWGaNWuWbDab47OFCxeqZ8+eGjBggIqKijr8s5SuPU2fnZ2tGTNmaMGCBQoLC1NsbKw+/PBDl+JeyyuvvKLo6GiFhITogQceUGNjo+OzxYsXq0+fPgoNDdXUqVMd1xcUFKT4+HhJl35WJpNJBQUFbZ7nctfz6aefVq9evbR8+XINHjxYQ4YMUVNTkyTpD3/4g+Li4tS3b19lZ2erpeXSv5IzZszQ/Pnz9bOf/UzBwcEaPHiw9u/f36FcmpubrzkOAAB4L7cVqg0NDZowYYImT56sAwcOKDk5WdOmTVNTU5PGjRune+65R59//rmio6OVlpbmKD7a8tlnnyklJUXFxcUym81KT0+XpHZj1tbWKi8vT1u2bFFOTo7mzp2rs2fP3tD1TZ8+XTNnztTBgweVmJioefPmSZLKysqUlpamJ598Unv27NGePXv04osvSpI2btyol156SW+++abWrl2rdevW3VAOl23dulWHDx9WUVGRRo8erV/+8pc3FO8f//iHnnjiCa1evVr79+/XiRMn9PLLL0uSvvzySz377LN64403VFRUpMOHD8tqtUqSjh8/rpKSEklSXV2d6urqlJSU1KFzxsbGaty4ccrOztaf//xnHT16VCUlJXrzzTeVk5Mjq9WqzZs3a926dU5/0Xj11VcVHBys0tJS9erVS7m5uR3KpbVxV7LZbGpoaHA6Wuy+9HdXAIC3a5HdLYcRuG3qf/PmzYqIiFBWVpYkad68eRo5cqQ2bdqkkJAQPf/885KkZcuWqWfPntq9e3e7MaOiovTMM8/IZDIpOztbSUlJunjxYrsxm5qatGLFCiUmJmrgwIGaM2eOTpw4odjY2Ou+vq5du8pms8liseiVV15xFMUbNmzQt771LT366KOSpPT0dK1atUrz5s3TW2+9pWnTpmnMmDGSpFmzZmnXrl3XncNlfn5+WrlypYKCgjRjxgzNnj37huIlJCTo66+/VkBAgHbv3i273a6DBw9KutSplC4VcDExMU75WywWhYaGSpLCwsJcOudjjz2m2tpajR07ViNGjFBERIQuXLiglStXKiMjw9FJzsnJ0YIFC5SRkSHp0u/Er3/9a0mX1vBu2LChQ7m0Nu5Kubm5ysnJcXovPqSf+lkGuHR9AADcLMYoMd3DbR3Vqqoqp6nz8PBwTZkyRUePHnVMyUqS2WxW3759dfTo0atinDlzxul1VFSUY3NMZGSkmpubVVtb227M8PBwDR8+XJIcazztdtf+WK/MZcOGDcrPz1efPn2UmprqmMY/duyYioqKFBYWprCwMD311FOqrKyUJNXU1Cg6OtoRo1+/fi7l0JqUlBRHARkYGOjytV3p7NmzmjVrluLi4pSbmyt/f381NzdLkuLi4vTaa6/p2WefVffu3TVlyhSdOnXqhq/hcv6X/3nZ0aNHnX5O/fr1c/pd+delEK5ce0fHZWVlqb6+3umIC3XPnxsAAO7Q4qbDCNxWqEZHR6u8vNzxuqmpSYmJiYqJiXF6/9y5c6qurlZMTIxMJpOjIJKkwsJCp5iVlZWOzmVlZaX8/f3Vo0ePNmNKcnTWXNFWLqdPn9bp06f17rvv6p///Ke+853vODqoUVFRmjx5soqLi1VcXKySkhK9++67kqRevXqpurra6Xrc4Xqury2/+93vdPLkSR0/flzvvfeeUlJSHJ9VVVVp2LBh2rNnjyorK1VXV6eFCxc6Pu/S5dKv0I0Wy5fFxMToq6++crwuKytz/LlKbV97W7l09GdmNpsVGhrqdHQxcXMMAAA8wW3/BZ40aZLq6uq0aNEiVVVV6YUXXlBzc7MmTZqkxsZG5eTk6MiRI5ozZ44SEhKUlJSkqKgo1dTUqKysTKdPn77qXpfV1dXKzc1VeXm5FixYoLS0NPn5+em+++5rNeb1aiuXlpYWTZo0Sa+//rpOnTqlLl26OAroqVOn6sMPP9ShQ4ckXSr6HnnkEUlSWlqa1q1bp08++US7du3SH//4x+vO72ZqamqS3W7XqVOntH79eq1YscJR7O3bt0/33nuvPv74Y50+fVomk8lpfXGfPn102223adOmTTpy5Ei7m6na85Of/ERLly7Vzp07tXfvXmVnZzvWJrfH3bkAAOCNfGmNqtsK1dDQUG3fvl2bNm3SoEGDVFBQoLfeekshISF65513tGPHDg0dOlSVlZV6++231aVLF/Xv318ZGRlKTU1VamqqY4PSZcnJydq7d6/uuOMOnT9/XsuXL5ckBQcHtxrzerWVS0hIiF5//XX96le/Uv/+/bVp0yatWLFC0qWp6TVr1igzM1NDhgxRaWmpY/3jgw8+qMcff1xpaWn68Y9/rLS0tOvO72aaM2eO7Ha7Bg4cqNWrV2vmzJkqLi6WJI0bN06zZ8/WD37wAw0cOFB2u91p81ZAQIBee+01/fSnP9XgwYP197///YZyefDBB/Xcc89p+vTpmjhxoqZNm6af//znHRrr7lwAAPBGvnQfVZPdXXO2bma1WmW1WpWfn+/pVODjxkaP93QKAACD+L9H37np53gy7iG3xHmp4i9uiXMz+dTiu8sbnq48Ro4c2al5fPTRR63mkpmZ6TUxr9f69etbzWXp0qWdmgsAALcaX9pM5bUd1Zvh8s37rxQQEKDIyMhOy+PcuXP6+uuvr/lZSEiIunfv7hUxr1dTU1OrdwYIDw+XxWLptFzcgY4qAKCjOqOj+ou4KW6Js6ziDbfEuZl86hGqVz55ylOCgoLcnsvNiHm9goODFRwc7Ok0AACAwflUoQoAAGB0Rpm2dwcKVQAAAAMxyq2l3MGnNlMBAADAOOioAgAAGIjv9FPpqAIAABiKp55MVVpaqqSkJIWHh2vu3Lkdenz6ypUr1adPHwUEBGjcuHGqqalx6ZwUqgAAAAbiifuo2mw23X///RoxYoQKCwu1b98+Wa3WNsd89NFHmj9/vv785z+rvLxc586d09NPP+3SeSlUAQAA0KZt27apvr5eS5YsUf/+/bVo0SKtWrWqzTEHDhzQihUrNHbsWEVFRemRRx5RYWGhS+dljSoAAICB2N20StVms8lmszm9ZzabZTabr/puSUmJkpOT1a1bN0nSsGHDtG/fvjbjz5w50+n1gQMHNGDAAJdypKMKAABgIO6a+s/NzZXFYnE6cnNzr3nOhoYGxcfHO16bTCb5+fmprq6uQznX1tbq1Vdf1eOPP+7StdJRBQAA8EFZWVnKzMx0eu9a3VRJ8vf3v+qzoKAgnTlzRuHh4e2e6/HHH9eoUaM0adIkl3KkUAUAADAQd039tzbNfy0REREqLS11eq+xsVGBgYHtjv3Tn/6kDz74QMXFxS7nyNQ/AACAgXhi139SUpIKCgocrysqKmSz2RQREdHmuN27dysjI0N/+ctf1Lt3bxfPSqEKAACAdowZM0b19fVau3atJCkvL09jx46Vn5+fGhoadOHChavGHD9+XPfff7+eeeYZjRgxQk1NTWpqanLpvBSqAAAABtJit7vlcIW/v79Wrlyp9PR09e7dW3/729+Ul5cn6dIdALZs2XLVmA0bNujEiROaN2+eQkJCHIcrTPaOPFYA8GFjo8d7OgUAgEH836Pv3PRz/Cj2QbfEef3If7k85tixYyosLNSoUaPUs2dPt+TRFjZTAQAAoEMiIyMVGRnZaeejUAUAADCQFjft+jcCClUAAAADcdftqYyAQhUAAMBAXL21lJGx6x8AAABeiY4qAACAgbBGFQAAAF7Jl9aoMvUPAAAAr0RHFQAAwEB8aTMVhSoAAICB+NJDRZn6BwAAgFeiowoAAGAg7PoHAACAV2KNKgCHbXtXeDoFAAB8EoUqAACAgfjSfVQpVAEAAAyENaoAAADwStyeCgAAAPAwOqoAAAAGwq5/AAAAeCVf2kzF1D8AAAC8Eh1VAAAAA2HXPwAAALwSu/4BAAAAD6OjCgAAYCBM/QMAAMArsesfAAAA8DA6qgAAAAbS4kObqShUAQAADMR3ylQKVQAAAEPxpc1UrFEFAACAV6KjCgAAYCC+1FGlUAUAADAQnkwFAAAAeBgdVQAAAANh6h8AAABeiSdTAQAAAB5GRxUAAMBAfGkzFYUqAACAgfjSGlWm/gEAAOCV6KgCAAAYCFP/AAAA8Eq+NPVPoQoAAGAg3J4KAAAA8DA6qgAAAAbS4kNrVOmowlAqKipkMpk8Nh4AAE+zu+l/RkChCkOJiYlRXV2dp9MAAACdgKl/GEqXLl0UFhbm6TQAAPAYpv5xS9q7d69SUlIUHBys0aNH64svvpAklZaWKjU1VRaLRRMnTlRVVZUkKT8/X3FxcU4xTCaTKioqZLVaNXLkSKWlpclisWjChAmqqalxfK+9mBs3blRsbKzCw8O1bNmyDl/Dtabu24u5efNmDRgwQN27d5fVanXlRwYAgNdh6h+3nIaGBk2YMEGTJ0/WgQMHlJycrGnTpqmpqUnjxo3TPffco88//1zR0dFKS0tTS0tLuzE/++wzpaSkqLi4WGazWenp6ZLUbsza2lrl5eVpy5YtysnJ0dy5c3X27Nkbur7WYh4/flxTpkzRM888o127dmnr1q1txrHZbGpoaHA6bDbbDeUGAACuj8nuS4838GHr16/XwoULtX//fklSXV2dduzYoZaWFmVnZ+vAgQOSLhVqPXv21I4dO3Tu3DnNmDFDFRUVjjgmk0nl5eXKz8/X/PnzVVlZKZPJpL179yopKUnnzp3Tf/7nf7YZ87vf/a6Ki4s1fPhwnT9/XmazWRUVFYqNjW33OioqKhQfH+/0VI78/PxWY+bn52vx4sX6xz/+IUnatm2bJk6c2OpTPbKzs5WTk+P03ry5v9Bz/2dOx3/YAACfFdCj300/x8Ce/+aWOAdPFrolzs1ER9VHVFVVOU3jh4eHa8qUKTp69Kji4+Md75vNZvXt21dHjx69KsaZM2ecXkdFRTmm4SMjI9Xc3Kza2tp2Y4aHh2v48OGSpMDAQEk3/ji41mLW1NQoOjra8b1+/dr+P5CsrCzV19c7Hc/MSb+h3AAAcCem/nHLiY6OVnl5ueN1U1OTEhMTFRMT4/T+uXPnVF1drZiYGJlMJjU3Nzs+Kyx0/ptXZWWlYzq/srJS/v7+6tGjR5sxJSk0NNTt19dazF69eqm6utop57aYzWaFhoY6HWaz2a25AgCAjqFQ9RGTJk1SXV2dFi1apKqqKr3wwgtqbm7WpEmT1NjYqJycHB05ckRz5sxRQkKCkpKSFBUVpZqaGpWVlen06dPKzs52illdXa3c3FyVl5drwYIFSktLk5+fn+67775WY3a28ePH68CBA1qzZo3KysquugYAAIymxW53y2EEFKo+IjQ0VNu3b9emTZs0aNAgFRQU6K233lJISIjeeecd7dixQ0OHDlVlZaXefvttdenSRf3791dGRoZSU1OVmpqqefPmOcVMTk7W3r17dccdd+j8+fNavny5JCk4OLjVmJ0tMjJS69evV05OjlJTUzV69OhOzwEAAHfypal/NlPhulitVlmtVuXn53s6lZvuwqmvPJ0CAMAgOmMzVXz34W6JU15b4pY4NxM3/IfXaO1G/gMHDtTu3bs7NxkAAOBxdFThNf71Nlj/KiAgQJGRkZ2bzL+gowoA6KjO6KjGdh/mljhHaj936fulpaV65JFHdPjwYc2aNUu/+c1vrnoIz5V27typ9PR0nTx5Uv/xH/+hzMxMl87JGlV4jbi4uGsenixSAQDwNna73S2HK2w2m+6//36NGDFChYWF2rdvX7tPezx58qQmT56sqVOn6tNPP9W6dev0/vvvu3ReClUAAAC0adu2baqvr9eSJUvUv39/LVq0SKtWrWpzzLp169SnTx/Nnz9fCQkJeu6559odcyUKVQAAAANpkd0thyuPDS8pKVFycrK6desmSRo2bJj27dvXZp4lJSW6++67HcsDRo4cqaKiIpeulUIVAADAQNw19Z+bmyuLxeJ05ObmXvOcDQ0NTk+dNJlM8vPzU11dXat5XjkmNDRUx44dc+la2fUPAADgg7Kysq7a3NTa0xj9/f2v+iwoKEhnzpxReHh4h8Zc/r4rKFQBAAAMxF1PlTKbzR1+THhERIRKS0ud3mtsbFRgYGCbY06ePNnh718LU/8AAAAG4oknUyUlJamgoMDxuqKiQjabTRERER0eU1xc7PKdfChUAQAADMQTt6caM2aM6uvrtXbtWklSXl6exo4dKz8/PzU0NOjChQtXjZk8ebI++ugjvf/++7p48aIWL16s8ePHu3RebvgPtIMb/gMAOqozbvjf2/JNt8Q5Xv+lS9//+9//rocfflghISFqbm7Wzp07NWTIEMXFxWnp0qV64IEHrhrz8ssvKyMjQxaLRbfddpt27dql3r17d/icFKpAOyhUAQAd1RmFak/L7W6Jc7L+gMtjjh07psLCQo0aNUo9e/bs0JjDhw9r//79uvPOOxUaGurS+ShUgXZQqAIAOqozCtUeoQPdEudUw0G3xLmZWKMKAAAAr8TtqQAAAAzEXbenMgIKVQAAAAPxpVWbTP0DAADAK9FRBQAAMJAWF2/Wb2QUqgAAAAbC1D8AAADgYXRUAQAADIRd/wAAAPBKdtaoAgAAwBv5UkeVNaoAAADwSnRUAQAADMSXdv1TqAIAABiIL61RZeofAAAAXomOKgAAgIEw9Q8AAACv5EuFKlP/AAAA8Ep0VAEAAAzEd/qpksnuS/1jAIBb2Gw25ebmKisrS2az2dPpALhFUagCAFzW0NAgi8Wi+vp6hYaGejodALco1qgCAADAK1GoAgAAwCtRqAIAAMArUagCAFxmNpv1/PPPs5EKwE3FZioAAAB4JTqqAAAA8EoUqgAAAPBKFKoAAADwShSqAIBOV1FRIZPJ5LHxAIyBQhUA0OliYmJUV1fn6TQAeDkKVQBAp+vSpYvCwsI8nQYAL0ehCgAGs3fvXqWkpCg4OFijR4/WF198IUkqLS1VamqqLBaLJk6cqKqqKklSfn6+4uLinGKYTCZVVFTIarVq5MiRSktLk8Vi0YQJE1RTU+P4XnsxN27cqNjYWIWHh2vZsmUdvoZrTd23F3Pz5s0aMGCAunfvLqvV6sqPDIBBUagCgIE0NDRowoQJmjx5sg4cOKDk5GRNmzZNTU1NGjdunO655x59/vnnio6OVlpamlpaWtqN+dlnnyklJUXFxcUym81KT0+XpHZj1tbWKi8vT1u2bFFOTo7mzp2rs2fP3tD1tRbz+PHjmjJlip555hnt2rVLW7duvaHzADAIOwDAMNatW2f/5je/6Xj9z3/+0/6Xv/zFvn79evvAgQMd7587d84eEhJi//TTT+3vv/++PTY21imOJHt5ebl99erV9qioKHtLS4vdbrfbi4qK7H5+fvYLFy60G1OSvbi42G632+02m80uyV5RUdGh6ygvL7df+Z+gtmJarVZ7YmKi47tbt269ajyAWw8dVQAwkKqqKqdp/PDwcE2ZMkVHjx5VfHy8432z2ay+ffvq6NGjV8U4c+aM0+uoqCjHNHxkZKSam5tVW1vbbszw8HANHz5ckhQYGChJst/gww5bi1lTU6Po6GjH9/r163dD5wFgDBSqAGAg0dHRKi8vd7xuampSYmKiYmJinN4/d+6cqqurFRMTI5PJpObmZsdnhYWFTjErKysd0/mVlZXy9/dXjx492owpSaGhoW6/vtZi9urVS9XV1U45A7j1UagCgIFMmjRJdXV1WrRokaqqqvTCCy+oublZkyZNUmNjo3JycnTkyBHNmTNHCQkJSkpKUlRUlGpqalRWVqbTp08rOzvbKWZ1dbVyc3NVXl6uBQsWKC0tTX5+frrvvvtajdnZxo8frwMHDmjNmjUqKyu76hoA3JooVAHAQEJDQ7V9+3Zt2rRJgwYNUkFBgd566y2FhITonXfe0Y4dOzR06FBVVlbq7bffVpcuXdS/f39lZGQoNTVVqampmjdvnlPM5ORk7d27V3fccYfOnz+v5cuXS5KCg4NbjdnZIiMjtX79euXk5Cg1NVWjR4/u9BwAdD6T/UYXFAEADMtqtcpqtSo/P9/TqQDAVfw9nQAA4NbS2o38Bw4cqN27d3duMgAMjY4qAMCtKioqrvl+QECAIiMjOzcZAIZGoQoAAACvxGYqAAAAeCUKVQAAAHglClUAAAB4JQpVAAAAeCUKVQAAAHglClUAAAB4JQpVAAAAeCUKVQAAAHil/weva2GZiKZtJQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#查看特征值与目标值的相关关系\n",
    "#进行one—hot编码前\n",
    "sns.heatmap(data.corr()[['coupon_ind']])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 选取特征值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "#选取特征值\n",
    "X = data.iloc[:,0:9]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>age</th>\n",
       "      <th>job</th>\n",
       "      <th>marital</th>\n",
       "      <th>default</th>\n",
       "      <th>returned</th>\n",
       "      <th>loan</th>\n",
       "      <th>coupon_used_in_last6_month</th>\n",
       "      <th>coupon_used_in_last_month</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>43</td>\n",
       "      <td>management</td>\n",
       "      <td>married</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>42</td>\n",
       "      <td>technician</td>\n",
       "      <td>divorced</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>47</td>\n",
       "      <td>admin.</td>\n",
       "      <td>married</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>management</td>\n",
       "      <td>single</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>42</td>\n",
       "      <td>technician</td>\n",
       "      <td>divorced</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   ID  age         job   marital default returned loan  \\\n",
       "0   1   43  management   married      no      yes   no   \n",
       "1   2   42  technician  divorced      no      yes   no   \n",
       "2   3   47      admin.   married      no      yes  yes   \n",
       "3   4   28  management    single      no      yes  yes   \n",
       "4   5   42  technician  divorced      no      yes   no   \n",
       "\n",
       "   coupon_used_in_last6_month  coupon_used_in_last_month  \n",
       "0                           2                          0  \n",
       "1                           1                          1  \n",
       "2                           2                          0  \n",
       "3                           2                          0  \n",
       "4                           5                          0  "
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "#将类别型变量进行哑变量处理\n",
    "marital = pd.get_dummies(X['marital'])\n",
    "job = pd.get_dummies(X['job'])\n",
    "default = pd.get_dummies(X['default'])\n",
    "returned = pd.get_dummies(X['returned'])\n",
    "loan = pd.get_dummies(X['loan'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "#将处理好的哑变量与原来的数据按列连接\n",
    "XX = pd.concat([X,job,marital,default,returned,loan],axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 进行one-hot编码后目标值与特征值的相关关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "XXX = pd.concat([XX,data['coupon_ind']],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_8464\\1768420971.py:1: FutureWarning: The default value of numeric_only in DataFrame.corr is deprecated. In a future version, it will default to False. Select only valid columns or specify the value of numeric_only to silence this warning.\n",
      "  sns.heatmap(XXX.corr()[['coupon_ind']])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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+PDhGutevLaL/77o4MGDNp9heHi4zf9Hv1wmUZfPpbb1EhMTVVJSYlOae11Vqz4AAGgQTP1XLjg4WPv27bMel5WVKSoqSiEhITavnzlzRocPH1ZISIgMBoM1IZKkzZs327R54MAB68jlgQMH5OHhoVatWlXbpiTr6FldVBfLqVOndOrUKa1bt07//e9/dfPNN1tHUIOCgjR06FBt375d27dvV05OjtatWydJCggIsEnMLiawV+pyrq86r776qgoLC3Xs2DF9+umn6tOnj/W9Q4cOqXv37tqyZYsOHDig4uJivfDCC9b33dwu/G/y6+QuODjYZrnF/v37ZTAYbBL3ugoJCdHevXutx3l5edb/5lL1n0tVcdZU75e8vLzk6+trUwwGbo4BAHAijWjqv07fwDExMSouLtbLL7+sQ4cO6cUXX1RFRYViYmJ08uRJJScna//+/XryySfVoUMH9erVS0FBQTpy5Ijy8vJ06tSpS+5nefjwYaWkpGjfvn2aMWOGYmNj5e7ursGDB1fZ5uWqLhaz2ayYmBgtWrRIJ06ckJubmzWBfuCBB7Rhwwbt3r1b0oWkb8yYMZKk2NhYLV68WF999ZW++eYbvfPOO5cdX30qKyuTxWLRiRMn9MEHH2jevHnWhG7nzp0aOHCgvvzyS506dUoGg8FmfXHbtm3VvHlzrVy5Uvv377duUho5cqRmzpypTZs2affu3frjH/+oO++8U82aNbvsOB999FHNnTtX69ev17Zt25SUlGRdt1yTquIEAACuqU6Jqq+vr7KysrRy5Up17txZGzdu1LJly9SiRQutXbtWn3zyibp166YDBw5oxYoVcnNzU0REhCZNmqT+/furf//+1g1KF/Xu3Vvbtm3Tddddp7Nnz+r111+XJPn4+FTZ5uWqLpYWLVpo0aJFeumllxQREaGVK1dq3rx5ki5MP6enp2vKlCnq2rWrcnNzrWschw8frgkTJig2NlYPP/ywYmNjLzu++vTkk0/KYrGoY8eOeu+99zR27Fht375dknTXXXfpscce03333aeOHTvKYrHYbN7y9PTUu+++q8cff1xdunTR8uXLJUljx47VY489phEjRliXYVzchHW5hg8frueee06jR4/WoEGDNGrUKP3hD3+oVd2q4gQA4DelEY2oGixXuvjxCqSlpSktLU3Z2dmOCgGo0dXGzo4OAQDg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raefflqxsbFq3bq1tmzZoqSkJA0cOFC/+93v5Ofnp/vvv1+lpaW1ivPzzz/XddddJ39/f40cOVI///yzJOmFF17Q4MGDreft2bNH3t7e1niysrLUrVs3GY1GjRs3zuYxcC+88IJat26tyMhIbd269XI+PgAAnIK9HqHqCkhUIUkqKipSamqqVq9ereTkZE2dOlWnT5/Wzz//rIEDByomJkbfffedysvLbZ4uUVJSounTp+uVV15RfHy8unTpoqysLEkXEsexY8dq8+bNys/P1/Tp02uM4+DBgxo0aJAmTpyoLVu2qKysTPHx8ZKkuLg4/fvf/7YmvMuWLVN0dLT8/PyUl5en2NhYTZ48WVu2bNGWLVs0c+ZMSVJmZqb+9re/aenSpVq4cKEWL15s508PAADUBxJVSJLKyso0b948RUVFKSEhQWfPntXx48e1atUqeXp6avr06QoJCdHkyZOVmZlprffwww+ra9euatOmje655x61b99e586dkyT169dPo0ePVocOHfT0009rxYoVNcaxaNEi9e3bV+PHj1d4eLjeeustrVixQkePHlXHjh3VqVMnrVq1SpK0fPlyxcXFSZIyMjLUo0cPPfLII4qIiFBCQoI1zmXLlmnUqFG65ZZb1LdvX40bN67K/k0mk0pLS22K2eIqf3cCABoDR9xH1VFYo9qIlZeXW3/29/fXtddeK0nWp0xYLBYVFBSosLDQ+ng0s9mskydP6syZM5Iu3Gril//+peDgYOvPgYGBOnbsWI0xHTx4UOHh4dbjdu3aycvLSwcPHtTVV1+tESNG6KOPPtLtt9+unJwcDRkyRJJUUFCgrVu3Wm95cf78efn4+EiSjhw5ottuu83aZnh4uL755ptK+09JSVFycrLNa4E+oQpqEVZj7AAANASza+SYdkGi2ogYDAZVVFRYjzdv3mz92dfXt9I6QUFBuuGGG7RkyRJJF5LXkpKSS27qW5lf3q7iwIEDatu2bY11QkJC9Omnn1qPCwoKZDKZFBISIunC9P9LL72kjIwMDRw40JqMBgUFaejQoZo1a5YkqaKiwpqIBwQE6PDhwzaxVCUxMVFTpkyxee2OawZXcTYAAA2vro8/dWVM/TciQUFBOnLkiPLy8nTq1CklJSXVWCcmJkb79+/Xpk2b5O7uriVLlig6OloWi6XGuhs3blR6erp2796tV155RcOHD6+xzoMPPqivvvpK77zzjvbt26fHH39cw4YNU5s2bSRJERER6tSpk5KSkqzT/pL0wAMPaMOGDdq9e7ck6dVXX9WYMWMkSbGxsVq8eLG++uorffPNN3rnnXeq7N/Ly0u+vr42xc3ArwkAAI7AN3AjEhERoUmTJql///7q37+/pk2bVmMdo9GozMxMzZ49W506ddKyZcuUmZkpD4+aB+OHDBmihQsX6oYbblBERISef/75GusEBQVp9erVeuONN9SjRw81b95c7733ns05cXFxqqioUExMjPW18PBwpaena8qUKeratatyc3OVkZEhSRo+fLgmTJig2NhYPfzww4qNja0xDgAAnJXFTsUVGCy1GRoD6igpKUn5+flKS0uza7t79uxRRkaGdu3apUWLFtm17ar0bjegQfoBALi+jYez672Pj64eaZd2hh/9wC7t1CfWqMKlXH/99WrdurVWr17t6FAAAEA9I1FFvajN+tfLUduHBgAA8FtlNjSezVQkqkANTOZzjg4BAACrxrRmk81UAAAAcEqMqAIAALiQxvS8RBJVAAAAF9KYnkzF1D8AAACcEiOqAAAALqQxPUKVRBUAAMCFNKZd/ySqAAAALoQ1qgAAAICDMaIKAADgQrg9FQAAAJxSY1qjytQ/AAAAnBIjqgAAAC6kMW2mIlEFAABwIY1pjSpT/wAAAHBKjKgCAAC4EEZUgSrk5+fLYDBUeezssrOzFRYW5ugwAAC4bBaDfYorIFHFFQkJCVFxcbGjwwAAAL9BTP3jiri5ucloNDo6DAAAGg2m/oFfWLVqlSIjI3XVVVcpLS3N5r3Kpv4XL16sm2++2Xr8888/y9vbW4WFhZKk3Nxc9e/fX35+fho0aJAOHTpkPTc+Pl5JSUlatGiRrrnmGr3++uvW97Zt26Y+ffrIx8dH/fr10/fff29979tvv9VNN90kPz8/DR8+XCUlJdb33n33XQUFBaldu3bKysqyy2cCAICjmO1UXAGJKqp17NgxxcXF6emnn9Y333yjNWvW1FhnyJAh2rp1q37++WdJ0rp169SnTx+1bt1aZWVluuuuu3TnnXdqx44dCg4OVmxsrMzm//3KrF27Vm+++abmzJmjYcOGSZJKS0sVHR2toUOHateuXerdu7dGjRol6UIiPHDgQMXExOi7775TeXm5nnrqKUlSTk6OnnjiCb3xxhtau3at/vnPf1Ybu8lkUmlpqU0xW1zl1xkA0BhY7FRcAYkqqpWVlaXw8HCNHz9ekZGRSk5OrrGOr6+vbr31Vq1bt87axr333itJWrlypVq0aKHnn39eoaGheu2117R7925t2rTJWn/v3r36+OOPFRMTo6CgIEkXRnVbtmypxMREBQYGatq0aUpMTLS+5+npqenTpyskJESTJ09WZmamJGn58uW68847FRsbq27dumnq1KnVxp6SkiI/Pz+bcuzUoWrrAACA+kGiimodOXJEwcHB1uPw8PBa1fv973+vjz/+WNKFEdV77rlHknTw4EG1b9/eep6Xl5fatWungwcPWl8bPXq0/Pz8bNo7dOiQzW59f39/xcXFSZIKCgpUWFgof39/GY1G3XfffSosLNSZM2fqHH9iYqJKSkpsSpvmQbW6ZgAAGoLZYJ/iCthMhWoFBATo8OHD1uMDBw7Uql5sbKyef/55fffddwoKClJgYKCkC3cJ2Ldvn/W8M2fO6PDhwwoJCbG+1rx580vaCw4OtqlXVlam3r1769///reCgoJ0ww03aMmSJZIki8WikpISeXp6KiAgQDt27Kh1/F5eXvLy8rJ5zc3A33MAAOfRmBak8Q2Mat19993atWuX0tPTlZeXp6SkpFrV8/f3V6dOnZSSkmKd9pekwYMH6+TJk0pOTtb+/fv15JNPqkOHDurVq1e17cXExKi4uFgvv/yyDh06pBdffFEVFRVq06aNYmJitH//fm3atEnu7u5asmSJoqOjZbFYFBsbq7Vr12rNmjX6/vvvNXPmzCv5OAAAQAMiUUW1AgMD9cEHHyg5OVn9+/dXv379al333nvvVUZGhoYPH259zcfHR2vXrtUnn3yibt266cCBA1qxYoXc3Kr/X9HX11dZWVlauXKlOnfurI0bN2rZsmUyGAwyGo3KzMzU7Nmz1alTJy1btkyZmZny8PBQz549NWfOHI0fP16DBg3SwIEDL/uzAADAGTSmXf8Gi8XiKhu/AIfocXXtk3MAQOO27eiX9d7HrJAH7dLOnw4ssks79YkRVQAAADglNlMBNSg6W+roEAAAsHKVHfv2QKIKAADgQlxlfak9MPUPAAAAp8SIKgAAgAtpTLvgSVQBAABciLkRpaokqgAAAC6ENaoAAACAgzGiCgAA4EIaz8Q/iSoAAIBLYeofAAAAcDBGVAEAAFwIT6YCAACAU2pMt6di6h8AAABOiUQVAADAhVjsVOoqNzdXvXr1kr+/v6ZOnSqLpeZW5s+fr7Zt28rT01N33XWXjhw5Uqc+mfoHatCxeTtHhwAAgJUjdv2bTCYNGTJEd999t5YsWaI//vGPSktL05gxY6qs88UXX2j69OlavHixOnXqpJEjR+pPf/qTFi9eXOt+GVEFAABAtT7++GOVlJRozpw5ioiI0Msvv6wFCxZUW2fXrl2aN2+e7rjjDgUFBWnMmDHavHlznfolUYXDZGdnKywszK5tpqWlacCAAXZtEwAAZ2KWxS7FZDKptLTUpphMpkr7zMnJUe/evdWsWTNJUvfu3bVz585q4xw7dqyGDx9uPd61a5ciIyPrdK0kqnCY/v37a8eOHY4OAwAAl2KvNaopKSny8/OzKSkpKZX2WVpaqvbt21uPDQaD3N3dVVxcXKuYi4qK9Pbbb2vChAl1ulbWqMJhPDw85Ovr6+gwAABwKfZao5qYmKgpU6bYvObl5VXpuR4eHpe85+3trfLycvn7+9fY14QJE9S3b1/FxMTUKUZGVFGvPvnkE3Xu3FnNmjVTv379lJeXZ32vsqn/i1P377zzjtq0aaOAgAD961//sr7/6aefqn379goMDNSf//xnBQcHKzMzs8Y4Fi5cqA4dOqhVq1Z65plnarVTEQCA3zIvLy/5+vralKoS1ZYtW6qwsNDmtZMnT6pJkyY19vOPf/xDn3/+uf7xj3/UOUYSVdSr0aNHa+zYsfrpp58UFRWladOm1Vjn+++/19KlS/XFF18oPj7e+teexWLRQw89pBdeeEGLFy/Wm2++qU8//VS33nprte1t2LBB48eP19y5c5Wdna3333+/TjsOAQBwJvZao1oXvXr10saNG63H+fn5MplMatmyZbX1Nm3apEmTJmnJkiVq06ZNna+VRBX1qmnTpjKZTPLz89Nbb72lRYsW1VinrKxM6enp6tChg8aNG6eDBw9KkgoLC3X48GGNGDFCAwYMUIsWLXTixAm1aNGi2vbS09N1zz33KCYmRlFRUXrwwQerHIWtbGG52eKIG4EAAFA5R9xH9ZZbblFJSYkWLlwoSUpNTdUdd9whd3d3lZaW6ty5c5fUOXbsmIYMGaKnn35aPXv2VFlZmcrKyurUL4kq6lVGRoays7PVtm1b9e/fX1u3bq2xTufOna1/df1ySuGqq66S0WjU119/rby8PJWUlNRq92BBQYGWL18uo9Eoo9GoV199VQcOHKj03MoWlueX7q3l1QIA8Nvk4eGh+fPnKyEhQW3atNG//vUvpaamSrpwB4DVq1dfUicjI0PHjx/XtGnT1KJFC2upU792iR6oxKlTp3Tq1CmtW7dOZ8+e1XPPPadHHnlE3333XbX1qtpgZTab1bNnTw0aNEjnz59XamqqWrduXWMcQUFBSkhI0KRJkyRJ586dk9lc+ShpZQvLh3W5t8Y+AABoKI6a5xs2bJh2796tzZs3q2/fvtbv4Pz8/ErPnzRpkvW793KRqKLemM1mxcTE6N1339Vtt90mNze3KhPE2tiwYYP++9//avPmzWrZsmWt17qMHj1ao0eP1v33369WrVrp2WefldlsttmkdZGXl9clC8ndDEw8AACch+WyHoBqH4GBgQoMDGyw/vgGRr1p0aKFFi1apJdeekkRERFauXKl5s2bd9nt3XjjjSosLFT//v3Vtm1b+fr6asaMGTXWu/nmm5WUlKSHHnpIPXr00NmzZ/Xmm29edhwAAKBhGCzcpwcuYvr06Tp06JBeeuklNWnSROvWrdMTTzyhoqKieu33juC767V9AMBvx78Prq33Pp4Ii7NLO6/n/59d2qlPTP3DZQwbNkwTJ05Ux44ddf78eXXs2FFvvfWWo8MCAKBB1fXWUq6MRBUuo2fPnjb3cAMAAL9tJKpADcoqTI4OAQAAq8YznkqiCgAA4FKY+gcAAIBTakzPS+T2VAAAAHBKjKgCAAC4EEfe8L+hkagCAAC4EKb+AQAAAAdjRBUAAMCFMPUPAAAAp8TUPwAAAOBgjKgCAAC4ELOFqX8AAAA4ocaTpjL1DwAAACfFiCoAAIALMTeiMVUSVaAGP58/5egQAACw4vZUAAAAcErcngoAAABwMEZUAQAAXEhjWqPKiCpcxvvvv6+oqCjrcVlZmby9vfXjjz/q22+/1U033SQ/Pz8NHz5cJSUl1vMWLVqksLAwNW/eXAMHDlRRUZEjwgcAwC4sdvrHFZCowmXExsZqz5492rVrlyTp448/VqdOnXT11Vdr4MCBiomJ0Xfffafy8nI99dRTki4ks2PGjFFqaqp27twpDw8PzZo1y5GXAQAAaompf7gMX19fRUdHa+nSpXrmmWe0fPlyxcXFadWqVfL09NT06dNlMBg0efJkPfTQQ5Ikd3d3eXp6ymQyKSAgQJmZmbJU80QPk8kkk8lk85rZYpabgb/pAADOgc1UgJMaMWKEPvroI507d05r1qzRiBEjVFBQoMLCQvn7+8toNOq+++5TYWGhzpw5o6ZNm+rDDz/U/Pnz1bp1a0VHR2vv3r1Vtp+SkiI/Pz+b8t/yIw14hQAAVM9isdiluAISVbiUoUOHaufOnXrvvfcUGRmpiIgIBQUF6YYbbtD27du1fft25eTkaNu2bfL09FRRUZH8/f315Zdf6tixYwoICNDkyZOrbD8xMVElJSU2pWWztg14hQAA4CISVbgUHx8fDRw4UH/+858VFxcnSYqJidH+/fu1adMmubu7a8mSJYqOjpbFYtGJEyd0++23KysrS6WlpXJzc5PZXPWkiZeXl3x9fW0K0/4AAGdilsUuxRWwRhUuJy4uTsuWLdOIESMkSUajUZmZmXriiSeUm5urrl27KjMzUx4eHrrmmms0e/ZsPf744zp69KiuvfZaLViwwMFXAADA5WtMa1RJVOFS9u7dq9OnT6tv374KCQmxvt6rVy998803ldaZMGGCJkyY0FAhAgAAOyFRhUsZNmyYjh8/rg8//NDRoQAA4BCucg9UeyBRhUvZsWOHo0MAAMChXGV9qT2QqAI16Nss1NEhAABg5Sq3lrIHtjMDAADAKTGiCgAA4ELY9Q8AAACn1Jg2UzH1DwAAAKfEiCoAAIALYdc/AAAAnBK7/gEAAAAHY0QVAADAhTD1DwAAAKfErn8AAADAwRhRBQAAcCHmRrSZikQVAADAhTSeNJVEFQAAwKWwmQqA1cLDXzs6BACAi/iHowP4jSFRBQAAcCGMqAIAAMAp8WQqAAAAwMEYUQUAAHAhjWnqnxFVuIz3339fUVFR1uOysjJ5e3vrxx9/1LfffqubbrpJfn5+Gj58uEpKSqznLVq0SGFhYWrevLkGDhyooqIiR4QPAIBdWOz0jysgUYXLiI2N1Z49e7Rr1y5J0scff6xOnTrp6quv1sCBAxUTE6PvvvtO5eXleuqppyRdSGbHjBmj1NRU7dy5Ux4eHpo1a1aVfZhMJpWWltqUxrQWCAAAZ0KiCpfh6+ur6OhoLV26VJK0fPlyxcXFadWqVfL09NT06dMVEhKiyZMnKzMzU5Lk7u4uT09PmUwmBQQEKDMzUy+99FKVfaSkpMjPz8+mWMwnG+T6AACoDYvFYpdSV7m5uerVq5f8/f01derUWrWxfv16de7cWa1atdKcOXPq3CeJKlzKiBEj9NFHH+ncuXNas2aNRowYoYKCAhUWFsrf319Go1H33XefCgsLdebMGTVt2lQffvih5s+fr9atWys6Olp79+6tsv3ExESVlJTYFINbiwa8QgAAqmeWxS6lLkwmk4YMGaKePXtq8+bN2rlzp9LS0qqtU1hYqKFDh+qBBx7Q119/rcWLF+uzzz6rU78kqnApQ4cO1c6dO/Xee+8pMjJSERERCgoK0g033KDt27dr+/btysnJ0bZt2+Tp6amioiL5+/vryy+/1LFjxxQQEKDJkydX2b6Xl5d8fX1tisFgaMArBADA+Xz88ccqKSnRnDlzFBERoZdfflkLFiyots7ixYvVtm1bTZ8+XR06dNBzzz1XY51fI1GFS/Hx8dHAgQP15z//WXFxcZKkmJgY7d+/X5s2bZK7u7uWLFmi6OhoWSwWnThxQrfffruysrJUWloqNzc3mc1mB18FAACXz15T/5XtyzCZTJX2mZOTo969e6tZs2aSpO7du2vnzp3VxpmTk6PbbrvNOuBz4403auvWrXW6VhJVuJy4uDiVlpZqxIgRkiSj0ajMzEzNnj1bnTp10rJly5SZmSkPDw9dc801mj17th5//HGFh4dr165deuWVVxx8BQAAXD57Tf1Xti8jJSWl0j5LS0vVvn1767HBYJC7u7uKi4urjPPXdXx9fVVQUFCna+U+qnApe/fu1enTp9W3b1+FhIRYX+/Vq5e++eabSutMmDBBEyZMaKgQAQCoV/a6tVRiYqKmTJli85qXl1el53p4eFzynre3t8rLy+Xv71+rOhfPrwsSVbiUYcOG6fjx4/rwww8dHQoAAC7Ny8urysT011q2bKnc3Fyb106ePKkmTZpUW6ewsLDW51eGRBUuZceOHY4OAQAAhzI74P7evXr10rvvvms9zs/Pl8lkUsuWLautk5GRYT3evn27AgMD69QviSpQg9vadHN0CAAAWDniqVK33HKLSkpKtHDhQo0ePVqpqam644475O7urtLSUjVt2lSenp42dYYOHaqJEyfqs88+080336xZs2bp7rvvrlO/JKoAAAColoeHh+bPn6+RI0dq6tSpqqio0Pr16yVduAPA3LlzNWzYMJs6rVq10uzZs3X3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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(XXX.corr()[['coupon_ind']])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看类别型变量的所有类别及类别分布概率情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['management', 'technician', 'admin.', 'services', 'retired',\n",
       "       'student', 'blue-collar', 'unknown', 'entrepreneur', 'housemaid',\n",
       "       'self-employed', 'unemployed'], dtype=object)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['job'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['married', 'divorced', 'single'], dtype=object)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['marital'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['no', 'yes'], dtype=object)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['default'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['yes', 'no'], dtype=object)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['returned'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['no', 'yes'], dtype=object)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['loan'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "no     0.839673\n",
       "yes    0.160327\n",
       "Name: loan, dtype: float64"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['loan'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "yes    0.553778\n",
       "no     0.446222\n",
       "Name: returned, dtype: float64"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['returned'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "married     0.602165\n",
       "single      0.282695\n",
       "divorced    0.115140\n",
       "Name: marital, dtype: float64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['marital'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "no     0.982304\n",
       "yes    0.017696\n",
       "Name: default, dtype: float64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['default'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "blue-collar      0.215507\n",
       "management       0.209188\n",
       "technician       0.167516\n",
       "admin.           0.114903\n",
       "services         0.092507\n",
       "retired          0.050282\n",
       "self-employed    0.034917\n",
       "entrepreneur     0.033811\n",
       "unemployed       0.027689\n",
       "housemaid        0.026188\n",
       "student          0.021053\n",
       "unknown          0.006438\n",
       "Name: job, dtype: float64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['job'].value_counts(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 将未进行独热编码的特征删除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = [2,3,4,5,6]\n",
    "XX.drop(XX.columns[x], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>age</th>\n",
       "      <th>coupon_used_in_last6_month</th>\n",
       "      <th>coupon_used_in_last_month</th>\n",
       "      <th>admin.</th>\n",
       "      <th>blue-collar</th>\n",
       "      <th>entrepreneur</th>\n",
       "      <th>housemaid</th>\n",
       "      <th>management</th>\n",
       "      <th>retired</th>\n",
       "      <th>...</th>\n",
       "      <th>unknown</th>\n",
       "      <th>divorced</th>\n",
       "      <th>married</th>\n",
       "      <th>single</th>\n",
       "      <th>no</th>\n",
       "      <th>yes</th>\n",
       "      <th>no</th>\n",
       "      <th>yes</th>\n",
       "      <th>no</th>\n",
       "      <th>yes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>43</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>42</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>47</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>42</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25312</th>\n",
       "      <td>25313</td>\n",
       "      <td>55</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25313</th>\n",
       "      <td>25314</td>\n",
       "      <td>52</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25314</th>\n",
       "      <td>25315</td>\n",
       "      <td>35</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25315</th>\n",
       "      <td>25316</td>\n",
       "      <td>37</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25316</th>\n",
       "      <td>25317</td>\n",
       "      <td>52</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25317 rows × 25 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          ID  age  coupon_used_in_last6_month  coupon_used_in_last_month  \\\n",
       "0          1   43                           2                          0   \n",
       "1          2   42                           1                          1   \n",
       "2          3   47                           2                          0   \n",
       "3          4   28                           2                          0   \n",
       "4          5   42                           5                          0   \n",
       "...      ...  ...                         ...                        ...   \n",
       "25312  25313   55                           2                          1   \n",
       "25313  25314   52                           1                          1   \n",
       "25314  25315   35                           2                          0   \n",
       "25315  25316   37                           2                          0   \n",
       "25316  25317   52                           3                          0   \n",
       "\n",
       "       admin.  blue-collar  entrepreneur  housemaid  management  retired  ...  \\\n",
       "0           0            0             0          0           1        0  ...   \n",
       "1           0            0             0          0           0        0  ...   \n",
       "2           1            0             0          0           0        0  ...   \n",
       "3           0            0             0          0           1        0  ...   \n",
       "4           0            0             0          0           0        0  ...   \n",
       "...       ...          ...           ...        ...         ...      ...  ...   \n",
       "25312       0            1             0          0           0        0  ...   \n",
       "25313       0            0             0          0           0        0  ...   \n",
       "25314       0            1             0          0           0        0  ...   \n",
       "25315       0            0             1          0           0        0  ...   \n",
       "25316       0            0             0          0           1        0  ...   \n",
       "\n",
       "       unknown  divorced  married  single  no  yes  no  yes  no  yes  \n",
       "0            0         0        1       0   1    0   0    1   1    0  \n",
       "1            0         1        0       0   1    0   0    1   1    0  \n",
       "2            0         0        1       0   1    0   0    1   0    1  \n",
       "3            0         0        0       1   1    0   0    1   0    1  \n",
       "4            0         1        0       0   1    0   0    1   1    0  \n",
       "...        ...       ...      ...     ...  ..  ...  ..  ...  ..  ...  \n",
       "25312        0         1        0       0   1    0   1    0   1    0  \n",
       "25313        0         0        1       0   1    0   1    0   0    1  \n",
       "25314        0         1        0       0   1    0   0    1   1    0  \n",
       "25315        0         1        0       0   1    0   1    0   1    0  \n",
       "25316        0         0        1       0   1    0   1    0   1    0  \n",
       "\n",
       "[25317 rows x 25 columns]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "XX"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 训练逻辑回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "#分离训练集与测试集\n",
    "XX_train,XX_test,Y_train,Y_test = train_test_split(XX,data['coupon_ind'],train_size=0.75)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\anaconda3\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(C=10000.0, class_weight=&#x27;balanced&#x27;, random_state=100)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression(C=10000.0, class_weight=&#x27;balanced&#x27;, random_state=100)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "LogisticRegression(C=10000.0, class_weight='balanced', random_state=100)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#训练逻辑回归模型，这里由于目标值样本不均衡，采用加权的方式建立模型\n",
    "model = LogisticRegression(C=1e4,random_state=100,class_weight='balanced')\n",
    "model.fit(XX_train, Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.9999</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18982</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18983</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18984</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18985</th>\n",
       "      <td>0.0207</td>\n",
       "      <td>0.9793</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18986</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>18987 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            0       1\n",
       "0      0.9999  0.0001\n",
       "1      1.0000  0.0000\n",
       "2      1.0000  0.0000\n",
       "3      1.0000  0.0000\n",
       "4      1.0000  0.0000\n",
       "...       ...     ...\n",
       "18982  1.0000  0.0000\n",
       "18983  1.0000  0.0000\n",
       "18984  1.0000  0.0000\n",
       "18985  0.0207  0.9793\n",
       "18986  1.0000  0.0000\n",
       "\n",
       "[18987 rows x 2 columns]"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看训练集的概率\n",
    "prob = model.predict_proba(XX_train)\n",
    "pd.DataFrame(prob).apply(lambda x:round(x,4))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看预测结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           是       0.54      0.94      0.69       720\n",
      "           否       0.99      0.90      0.94      5610\n",
      "\n",
      "    accuracy                           0.90      6330\n",
      "   macro avg       0.77      0.92      0.82      6330\n",
      "weighted avg       0.94      0.90      0.91      6330\n",
      "\n"
     ]
    }
   ],
   "source": [
    "#查看预测结果的准确率、召回率、f1-score\n",
    "pred = model.predict(XX_test)\n",
    "print(classification_report(Y_test,pred,labels=[1,0],target_names=['是','否']))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 混淆矩阵及可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[5039,  571],\n",
       "       [  42,  678]], dtype=int64)"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#做出混淆矩阵\n",
    "confusion = confusion_matrix(Y_test,pred)\n",
    "confusion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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9eMf/1gjR46UJP3ud7/TaaedptzcXK1bt07jxo1TYmJisAI6trx95MiRIRf6flPrrqamRo888ohmzJihwsJCTZgwQX369NG5554b1s/Q3NwsSSotLQ3uq66ultfrDV7E/NUFFtLRZcm9e/cO6/PRg1lRqKzCfP9NN92knJwcTZs2TZL01ltvyeVy6eyzzw65ML6mpkaBQECpqanKzs7u1FhHEFaIub/97W+aN2+e7rjjDvXt21dtbW164YUX9MEHH+i0005TfHy8fve738myLB08eFDS0VZeSUmJLrvsMp1yyil6+eWX253DOhZKFRUVGj58eHD/jh079E//9E8hx3722WeaNGmS4uPjde+996pv37566KGHdMsttyghISF4ndVXtba2qqGhQQMHDlSfPn1Crv065usr/RISEhQXFxdsOwLhcSnyRlh47z/nnHN0++23Ky0tTS0tLZo7d67+4z/+QxMmTFB9fb1WrlypmTNnqqSkROPHj5fb7VZubm6nxjqCsELM9e7dW5deeqmuv/56SUcrlOrqao0ePVo333xzcCXdueeeqzvvvFP/+Z//qUAgoKSkJM2cOVN33nmnbNsO3tPvmGMX/H7V5s2bg3eRONaGaGpqUm5urvbs2aPXX39dffv2lSRde+21ysvL0zPPPKOGhgadc845IZ/V1tampqYmrVu3ThMnTgxWVt+mra1NR44c6dgvCOhCM2fO1Pbt2zV58mQlJiZqypQpKi4ulsfjUWlpqQoLC1VUVKTW1tbgrcQ6O9YRXGcFIx04cEAnn3xyWMceOXJES5Ys0YIFC0Lafe+9954yMzO1ffv2YGXl9/s1cuRIFRQUhKyC+t///V8dOXKkXeBF25VXXqkdO3YEVxkC3+bYdVbnFZTIExfZIpyWI036y5pbv/M6q++ya9culZeXa+zYserXr19UxsJBWAGAoYJhdfl90Qmr3y+IOKxihdWAAADjcc4KAExnKQqrAaMyk5ghrADAdJbr6BbpZziYs2cPAOgRCCsAgPEIKwBhOXDggDIyMlRTUxPrqfQ8x9qAkW4O5uzZ47ii8lRO4Cv279+vvLw8gipWonjXdacirLqZQCCgSZMmKSsrS+Xl5aqqqtKKFStiPS04XEFBgQoKCmI9DfRghFU3s3HjRtXX12vJkiUaMmSIiouLtXz58lhPCw5XWlqqG264IdbT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hqMJSFgBgPmisMDC6WlFGxA9Qmtrq6677jpVVFTEeioAOoGwQo/gdrv1wQcf6LHHHjvuuG3bsixLqampOvnkk2VZlsrLy/XOO+/o0KFDIcfV1NTo888/76qpA8E2YKSbk9EGRLf0yCOP6IEHHgjZV1dXp82bN+vFF18M2T9r1iwtXLhQvXr10ttvv609e/Zo8uTJysrK0tSpU7Vt2za53e7g8YFAQE8//bROOeWULvlZAE5aEVbophobG3XOOedow4YNIfv37t0ry7KCQZOfnx+snOLi4iRJL7/8siZMmCDLsrR+/founTeA46MNiG5p+PDhGjdunHbt2qXzzjtPb731liTppZdeUmZmZvC4adOmKTc3N+S9mzZt0iWXXKKmpia1tra2++y2tjY1Njae2B8A+AragFRW6KZ+8pOfqLW1VS6XS9dee60uvvhi3XbbbfL5fDr99NODxxUWFoa8r6GhQX/5y1/0zDPPaMaMGXr11VflcrkUCAQUCASUlJQk27YVCAS0a9cuHgGBrkEbkLBC9/Vv//ZvOuuss3TnnXcqOztbO3fu1N69e7/1rv3f+973lJ2drVdeeUXr1q0L7n/iiSe0YcMGPf/8810xdQBfQxsQ3daCBQu0du1a/ehHP9KwYcM0efJk7d27V+np3/zgTpfLpYULF2rRokWSpPXr1+uvf/1rcPz9998PCTGgK1hR+nIywgrdUmNjo8477zxt3bpVP/3pT9WrVy9J0u7du0PCqqWlRV9++WXIezMzM1VdXa0DBw5o7ty5+uCDD4JjO3bs0KxZs3Tw4MEu+TkA6R93XY90czLCCt3Ol19+qX79+ik1NVXf//73tWjRIvXt21d9+/bVb3/7W917773B13379lW/fv2C7127dq3GjRuncePG6eWXX1ZiYqIKCgqC4//6r/+qM844Q7/61a9i8aMBPRbnrNDtfO9732tXLUnS4sWL9T//8z969NFH5fP5lJqaGjLe2tqqrKwsnXLKKZo2bZpGjRqlO+64Qy5X6P/T3X777SosLNSNN97ItVZAF6GyQrf38ccfa+bMmVq5cqWefvppLV26VEOHDtV9992npqam4HHNzc0aOnSorrzyStXU1Mjn86mwsFB//vOfVVZWFgytSZMmaf78+Wpra4vVj4QehqXrhBW6qTfffFMlJSU6//zzdfbZZ+vkk0/WW2+9pVNPPVWPP/64XnnlFT333HMaOnSoVq9eLdu2Q66pGjFihF5//XV5PB49/vjjevPNN3X55ZdLkizL0t133620tLRY/XjoYVhgQRsQ3VRCQoLefPNN/exnP9OUKVOUkpISMj569Ght2bJFpaWlSkhIkGVZ+qbnkD711FNdMWUA34InBQOAoY49KXjX53URP93X7/fLd0qKY58UTGUFAIbjBhacswIAOACVFQCYjtKKsAIA00VjNZ/TVwPSBgQAGI/KCgAMF417+zn93oCEFQAYjlNWtAEBAA5AZQUApqO0IqwAwHykFW1AAIDxqKwAwHANfn/EdVGD3x+VucQKYQUAhoqLi1NaWpqGZqRH5fPS0tIUFxcXlc/qatx1HQAM1tTUpCNHjkTls+Li4hQfHx+Vz+pqhBUAwHgssAAAGI+wAgAYj7ACABiPsAIAGI+wAgAYj7ACABiPsAIAGO//AeDy4heaunhEAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 480x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#混淆矩阵可视化\n",
    "plt.matshow(confusion,cmap=plt.cm.Blues, alpha=0.8)\n",
    "plt.title('混淆矩阵')\n",
    "plt.colorbar() \n",
    "plt.ylabel('预测')\n",
    "plt.xlabel('实际')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 计算ROC曲线AUC值并可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "截距为: [-3.19092586]\n",
      "回归系数为: [[ 9.36437883e-04 -1.88164330e-01  4.57402205e-02  6.90600907e-01\n",
      "  -6.42599771e-01 -1.31618774e+00 -1.78274414e-01 -1.87251010e-02\n",
      "  -6.07289755e-01  1.63814784e+00 -1.52259487e-01 -7.35493073e-01\n",
      "  -2.64483809e-01 -8.09697409e-01 -9.85786272e-02 -5.48415421e-03\n",
      "   9.33876468e-02 -1.05359805e+00 -2.23071510e+00 -2.97416618e+00\n",
      "  -2.16759319e-01 -3.05975358e-01 -2.88495015e+00 -1.86166656e+00\n",
      "  -1.32925894e+00]]\n",
      "训练集正确率 0.9022489071469953\n",
      "预测值正确率 0.9031595576619273\n"
     ]
    }
   ],
   "source": [
    "print('截距为:',model.intercept_)\n",
    "print('回归系数为:',model.coef_)\n",
    "print('训练集正确率',model.score(XX_train,Y_train))\n",
    "print('预测值正确率',metrics.accuracy_score(Y_test,pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ROC曲线AUC值: 0.9199420677361854\n"
     ]
    }
   ],
   "source": [
    "#计算ROC曲线AUC值\n",
    "from sklearn.metrics import roc_curve,auc\n",
    "fpr,tpr,threshold = roc_curve(Y_test,pred)\n",
    "roc_auc = auc(fpr,tpr)\n",
    "print('ROC曲线AUC值:',roc_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Gtd///3HiRMnOH36NMeOHaNq1apcuXIFDw8PmjZtSosWLWjbti0AH374IdOnT8/3fmfOnLEOBty0aRONGzemTp06tGnThs2bN6MoijXBsYdOp+PatWu0adMmx2tDhw5l6NChAJw9e5YjR47w6quvkpCQkOu1OnToYPd9ATw9PXMdBPrLL79w5513EhISkut5cXFxVKtWzfqclnjq1q1rc5xWqyUgIICYmBi7Y2rYsCFgnnp7c+K2Z88e4uLiGD16tLWuSpUqdl1v7dq1XLx40eZZV69ejVarpX379vj7+1OlShV2796N0Wi0JpPXr19nx44dtGnThgoVKljPPXHiBK+88gqTJ0+mc+fOkmyIQpNkQ5RbixcvZvHixdZyUFAQn3/+Offffz8ffPABQI71LizTUtPS0gDzWhkAXl5edt3zm2++4ZtvvrGpa9++fY7jbv3lndtfqh9//DGHDx+2SWrefPNN5s+fT61atahatSoZGRlMmTKFbt260bhxY/bt28d9991nPX7UqFHcc889+cZctWpVAM6dO0dkZCRPPfUUAF26dOHdd9/l8OHDtGzZsoAnz2bve1arVi1+/vlnWrVqxZQpU3I9ZseOHdxxxx02dbGxsdZkyh7//PMPf//9N2+++SZXrlzh999/p1+/fjbHXLx40SYRsazncfMvZAtvb29u3Lhh9/2bNGlC7969+eKLL6wzZCIjIxk3bhxqtZoxY8bYfS2A559/nnXr1vHggw/yySefEBAQwJw5c9izZw+jRo0iKCgIgAkTJjB58mRGjBjBq6++SmJiIpMnT+b69et8+OGH1usZDAZGjhzJHXfcwVtvvVWoWISwkGRDlFsPPfQQzz77LFFRUbzwwgs888wzPP3004D5L2Agx6qUlrLlF6XlL8LMzEybxCQ5OZnTp08TGhpq0zoyYMAA3nvvPQB2797NmDFj+P7777nrrrsAePnll9m4caO1mwbIMb0xIyODadOmMWvWLEaPHs2PP/7I1atX8fDwYPLkybz11lsEBwdz5coVqlatSv369WnWrBmff/4548aN49FHH2Xx4sWoVCrq1q2b46/zvFi6UFq0aEF8fDwtWrSw1hcm2bj5PbvV5cuXuXz5Mk2aNEGr1XL33Xfne63U1NQc3UB5rTKal08//RQ3NzdGjhzJRx99xAcffMDw4cOZO3eu9RfzxYsXrc8L5OhiuJmiKKSnpxcqhjVr1vD8888zY8YMXn31VWv9I488Qv369Qt1rY4dO7Jx40ZeeuklOnXqZK3XaDS8/vrr1vKkSZNwd3fnvffes0lYGzRowMiRI63l6dOnc+LECf7++2+714ARIgcHjxkRotTlNkC0ZcuWSmBgoKLT6RRFyR6o+Msvv9ic+8svvyiA8uijjyqKoigdO3ZUAOXChQs2x23ZskUBlK+++kpRFPMsCIppgKjJZFJq1KihAIpGo1Hq1KmjtG/fXnnrrbdyPGvt2rWVp59+Wlm2bJni7u6utG/fXjl//nxh3i4ry/TJW7/atWtnEz8FDBBNT09X1Gq10qBBgxz3eOWVVxRA+e+//2zqJ0yYYDNA1DKoMr+vm6fZ5uXff/9VPDw8lEGDBimKoiiJiYnWZ6hWrZqyceNGJTk5WQGUF1980Xre1q1bFUDZtWuXzfWMRqOi1Wptji2MzMxM5fr168pdd92leHt75/hc3SyvAaI3S05OVlasWKEAyvjx4/M87saNG8q4ceNyzGL5/fffFbVarbzzzjvK1atXrV9DhgxRQkNDlatXr+b4XguRG1nUSwhg6tSpJCQk8MUXXwBw5513Ati0MACcPHkSgGbNmgFY/6I/dOiQzXHnzp0DyHMMQFGoVCpWr17Nv//+S1paGv/99x+//fabzV+tFv/73//4+uuvGTlyJF27dmXHjh23FVN6ejq7d++mefPmbN++3frVvn17Dh48SHx8PIB14OKtrQ2WrpOAgAC0Wi1NmjThv//+Q6fT2Rx37tw51Gq1teumIH/88QdpaWk2X5bvUUGMRiOjR49GrVbz7rvvAubVXJcsWcLChQu5evUqCQkJXLhwAbAdl3PXXXehUqlsBq0CHD16FL1eT7Vq1eyK4VZqtZo9e/Zw+PBhXn311UIvMnYrb29v3nvvPSpVqsSbb76Z53EpKSksXryY8PBwHnroIWv9li1bMBqNTJ06leDgYOvXypUriY2NJTg4mGeffbZIMYryQZINITB3bzRt2pSPP/6Y9PR0+vbti5ubG1999RUGgwEw/3JasmQJKpWKPn36AObBpGBuirdQFIVVq1bh5eVVYDfA7Wrfvj1169YlPT2dgwcP8tlnnzFy5Ei+++476zF6vZ4LFy6Qnp5OSEgIGzZswNvb2+79Q262e/duUlNT6devH+Hh4davgQMHYjKZ2LJlC5A9e2fnzp025+/atQuNRkODBg0A8/tmNBqtyR3AjRs32Lp1K3fffbfdY2Asx978ZZkxVJAXXniBX3/9lQ8++CBHV9KTTz5JREQEI0aM4OLFi4BtslG5cmU6duzIV199ZU2kABYtWgRA9+7d7YrhVkajkddff91mEHBRrF69msOHD/Puu+8SEBCQ53Fvv/02RqORTz75xKZ+1KhRNsml5atHjx5UqVKF7du3M3ny5CLHKcoBRzetCFHa8lpnw7Iy4ueff64oSvZ6FpYVRLt3764AyjPPPGNz3jPPPKMASt++fZUFCxYovXv3VgDljTfesB5TnN0oW7duVTp06KBUr15dUalUCqA0aNBAGTFihPVahw8fVlq2bKlotVqlb9++NmuB7NixQ2nfvr1y7Ngxu98zSxP7zbEqiqJERUUpgDJkyBBFUczN9tWqVVMqVKigTJkyRZk/f77Sr1+/HN0QaWlpSuvWrRW1Wq2MHz/eZvXK7du357h/Xt0oW7duzbHwlmWti/y6USZNmqQAytNPP13gs1vWTPn1119t6rdv366oVCqlS5cuyrZt25Q33nhDcXNzy7G2ybp16+xeVfTTTz9VAGXjxo0FHltQN0pqaqpSs2ZNpW3btorJZMrzuKNHjypqtVqZOHGiXTEqivlzKutsiMKQZEOUO3klG5mZmUr9+vWVOnXqKAaDQTGZTMpHH32kNGjQQPHw8FBq166tzJgxI8dS3yaTSZk3b57SuHFjxcPDQ6lXr54yd+5cm2Msi3rd7tfNyUZqaqpSp04dZciQIcp3331nXWhKURTljz/+UEaMGGEdE/H3338rJpNJGThwoKLRaJQ33nhDue+++xS1Wq2cPn3a7vesTp06SlBQkHWJ8JvVqlVLCQwMtL4vx48fV/r06aMEBAQo7u7uSq1atZQpU6Yoer3e5rzExERl/PjxSrVq1RQPDw+lbdu2uSYaiqIo48ePV6pWrapcuXJFOXz4sHWBqnXr1iknTpyw+dqxY4c1uTpy5IjNuIeEhATl4YcfVgClZ8+eBS5ulpmZaU0ez507l+P1pUuXKn5+ftbvU25jYm5NFvNy/fp1pWLFikrfvn0LPFZRCk42pk+frri5uSkRERH5Xqdr165KSEhIocZeSLIhCkulKIpScu0mQggwLxgWHBxsMxvFXl26dKFSpUocPnw43+MSExPp1KkTJ06c4Pnnn+ett96yzprIyMhg+PDhrFmzBoDx48eXymZxxeWZZ55h5cqVfPzxxzz11FNoNJoCF0ozmUxkZmby9ttvM2HCBM6dO8fdd9/N5cuXGTp0KF9//TVarTbHeQaDgXvuuYdr165x/fp1EhISuPvuuzlw4ECu90lMTGT//v34+/vTvn37XBcTE6K8k6mvQpQCy1RIX1/fQk9ldHd3t2sqpb+/P2vXrrVOab2Zh4cH33//PevWrePq1as89thjhYrB0fR6PRkZGYwePdpmkavCqFmzJhMmTOD69eu88847eS5EptFo6Nq1K4sXL6ZevXp06tSJqVOn5nldf39/evfufVsxCVFeSMuGEEIIIUqUtPcJIYQQokRJsiGEEEKIEiXJhhBCCCFKlCQbQgghhChR5XY2islk4uLFi/j6+hZqe2whhBCivFMUhaSkJKpXr27XdO9ym2xcvHiR0NBQR4chhBBCuKzY2FibpfzzUm6TDV9fX8D8Rvn5+WEwGNi2bRs9evRwmW2UXTFmcM24JebSITGXDom59Lhi3PbErNPpCA0Ntf4uLUi5TTYsXSd+fn7WZMPb2xs/Pz+X+kC4WszgmnFLzKVDYi4dEnPpccW4CxOzvcMQnGaA6LVr16hTpw4xMTF2Hb93716aNGlCpUqVmD17dskGJ4QQQojb5hTJRnx8PA8++KDdicbVq1fp27cvQ4cO5ffff+e7775j9+7dJRukEEIIIW6LUyQbQ4YMYciQIXYf/91331GtWjVef/11GjRowBtvvMHixYtLMEIhhBBC3C6nGLOxcOFC6taty/jx4+06/siRI9x3333WvqK2bdsyZcqUEoxQCCGEKBsURSHdYCJJbyBFbyQ5PZMkvYHk9EyS9ZnoUvWcvaaiOLcXdIpk49YdKgui0+lo2rSptezn58eFCxfyPUev16PX622uAeaBMJYvSxlgwMYBpBpSqelXk4XdFtpca+r+qfwV91ehYs7NDw/+gI/Gx1pedmIZy04uA2BGhxm0qdLG+lrElQhe++01m/MVFPTpej5Z9wkq7BukM6LxCEY0GWEtpxhSeHjjwwC0rtyadzq+Y3P8mJ1jOKc7V7gHu4W3xpu1D661lg0GA1vStljjnt9tPrX9altf3xyzmU8OfVKkewK80PIFetXuZS3H6GIYu3MsAD1r9+TFli/aHG/5nufG3ve6oM9Lft/zosjt8zL1t6no0/VcPX6V0Xdk75R68/e8KPL7vNz6PQf4+NDHbI3Zmu817Xmf8/u85Pc9L4r8Pi+hFULpT3/rzw5wnp8RecnvfXaGnxFg+3mZ320+IV4hgPnnhzP+jMjLre91UX5GKJgTBUUx/9tk+beiYLr5NQVMZL+mKOCXNApDSl1SMjJJ1hvB8zSe1VcBkHH9XgzX76Wu6iL/KdXBTU/1qn8wyRCe53Pd/Hm3h1MkG4Xl7u6OVqu1lj09PUlNzf8D8O677zJ9+vQc9du2bcPb29ta3r59OwCXdJfQowc9bNq0yeac6ORo4jLjivIIAGzdthVPlae1fCjtEHF683X3H9hPnCb7HtGGaOLS8rhnmv33PBR1iKAzQdZyupJuvW70hegcz3pOd444U9GeVZumzXHdNCWNq2lXAdi9dzdV1FWsr0XoI/J+1kL489CfKFHZmxpfMV6xXjfq3yg2XbKNyfo9z09B73UBn5f8vudFkdvnxfL+Hj15lE1ns2O6+XteFPl9XnL7nkelRhGXYed983mf8/u85Pc9L4p8Py96wC/7Zwc44c+IvOTyPjvLz4ibPy83f8+3b9/u3D8j8pL1XmekwcfLN5NuBL0R0o3wpyaaBHfzfR/5YjuZmZ6kG1WkGyHZ9wjGwCI8q8r8dT4xGWNKurVarTLipjH/0e2lSeN1z+UM52de10zimEdDTF7pNp/pWxX0O/dWLplsBAUFcfXqVWs5KSkJDw+PfM+ZMmUKL730krVsmSPco0cP69TX7du30717dzQaDYs2LrK2bPTuZtuYtH//fnRxuiI/R88ePW0y2OsnrnP85HEAOrbrmOOvls2/bbY535Ixaz21drdstGzckt5Nsp8nxZDCwo3mLLtB5Qb07mj7rOt3rociPqq3xpvevbOvazAY2PLTFoK9glGhomvnrjZ/qapiVPx26Lei3RQIaxmW46+WVTvNmXzT2k3p3dL2WS3f89zY+14X9HnJ73teFLl9Xjb9tgl9up7mjZvT+47cv+dFkd/n5dbvOcA/h/4hNiY232va8z7n93nJ73teFPl9XkIrhIIB688OcJ6fEXnJ7312hp8RYPt56dq5KyFeIdaf0aoLJf8zolHNptzdOJxkfSYpenP3gt9fwaQb02xaGEyW1oOsOlNWy4KCYn3tZvEZFfj8nNqmzrN6BdTefgAcvqYGU/ZwSo3WEw+Dn83xKlSoVKBSgZsq69+ocMuqU6nM31Xrayp4vmdTWga3poLWHR+tmmidP+/8uRFQGFnxGKMSzS0r77jNJ374Vj745U+bz/StLL0D9lIpt74TDqRSqThz5gy1a9fO97ivvvqKFStWWLOuPXv2MGbMGE6dOmX3vXQ6Hf7+/iQmJuLn58f7B98n6t8omtZryuS2k4vyGKXGYDCwadMmevfu7TLzt8E145aYS4fEXDrKasxGk2LuJsgae5CUnp0omMclZJeT0i315nELSfpMkrPGLaTojWQYTcUav9pNhY+HGl9PDRW07lTwdMdH646v1t1arnDrv2+u07rjm3WORl1Mczuun4EVQ+DqSXNZpYZe72Fo+UiB7/Wtv0ML4tQtGzqdDi8vrxwP27dvX8aNG8fu3bu59957+fDDD+nZs2eR7rU1ZitxGXHExsS6TLIhhBCuLr/BipbEIUmfiS41g+Nn3NjzwzFSMkzmROGmRCJZn0lqhrHY4/P2UOdMAnL5t6/WnAhklzX4aNV4qmH/np089GCvAlvgS9WZX2D1KEi7bi57BsCgb6BuFyjkeAx7OHWy0bx5c+bMmUO/fv1s6itVqsRHH31Ez5498ff3x8fHR6a+CiFEKTIYTaTc1EKQojcnBck3l9NvSgZuanGw/jfry2iyt4HdDS5fKvAojVp1U0KgoYI2K2HIalXw9XTHxyM7SbC0Mlheq3BT4qB2K9pGnQaDAQ+1/SttloqIr2HTRDBlmssVG8CwVVCxXond0qmSjVt7dPJb5OuZZ56hR48enDhxgs6dO9vVjCOEEOWZyaSQajByIzmdK2lw5Hwi6Znc1EJgyPq30dqlkFsLQlJ6JvrM4u1mUKmggkfWL3lP9xxJgbfGjcuxMdzVrBF+XlprUmBJDHxv6nrQuqsLvmF5ZMyEra/CwQXZdfW6wcCvwCugRG/tVMlGYdWvX5/69es7OgwhhChR+kyj7S/+fJKAlJvqbx2zkJyRSfbfdO5w+I8ix6Z1d8vRGmBT9rx5XIKllUGToxvCW6PGLZ9WBPOYjf/ofU8dlxln4nRunIXDy7PL7cZB97dAXfKpgEsnG0II4axuZ7Biyk2vJd80hqEkBit6qEwEVvAyD1jMZbCitVxagxVFyatYDx5eZB6r8cCH0GpUqd1akg0hhMhiGayYbJMU5BysmJyePUYhKc1AzAU3Fp87QHKG0TGDFfNJCm4erGj5txojmzdvpnfvTtJKUN40uh/GHwXfqqV6W0k2hBAu7+bBircmBSU3WPFmbpDHugMFDVa8uVvBV5tzzIKlO8LHQ417MbUiGAzF21IinJCiwB8LIP4UPPCReVCMRSknGiDJhhDCQRRFITXDaNONkJiSzpFrKtIPXSDNoNg1WDFZn0l6Mf/yLGiw4s3dCF7uKk6fiOSedm3w99baJAkyWFE4RGaGebbJ39+Yy8GN4O6nHBqSJBtCiEKxDFY0L4SU/4wF+wcr3kwNp25vVdXCDFbMnsFgGayY3cJQ0GDFmxkMBjbFH+O+RsHSJSEcL+UarB4JZ/ffVHc17+NLiSQbQpQDtw5WtGkZuCVZKO3Bim4qspICDT4eagxpSdSoUgk/L4+8ByvmMjbBR+uOh7sMVhTl2JUo84qgN86ay2otPPQpNB/k2LiQZEMIp5XXYMWUm7oVkm5NCmzGKBiIT1Qz5a+dJTZYMdckoIDBircOXPTUuFkXPMpekrq1tBIIURj/bIYfnoCMZHO5QhUYshxqtMn/vFIiyYYQxSy/wYq5TXVMyqeV4fYGK95MBWQnGu5uKnPXQdb4g+yxBfYNVrR0TRTnYEUhRBEoCuz/BHZMw7zxPFCtBQxZAf4hjozMhiQbQpD7YMWbZzAkpur5+7yK49tOkWowZSUFWS0MpTBY0ccj/5aCmxMBSwKhVcORiAP07NaFQB9PfLTuaN3dnGvZZCFE0ez/BHa8mV1u2g/6fQEe3g4LKTeSbAiXZu9gxfxWXcx/sOLN1BAbY3dslsGKPjclBzblEhiseDODwcC1E1AryFu6JIQoq1qOgIjFcOMcdHkVOk+2nebqJCTZEKXOaFJIy4RLiemkG9MLHKyY16qLJT1Y0ZwEqKngqcFH40bC1Us0rlcbP2+tDFYUQjgHn0owdJV5PY07+jk6mjxJsiHsoigK+kyTzcJI9gxWzG3MQkqGEXCHP/cVW3y5DVYsaLnlggYr3sw8cPECvXs3llYCIYTjnNwEoXeDT8XsuipNzV9OTJKNMs4yWDH5ltYBewYr2qy6WCyDFW3lP1jRsixzzm4FGawohCh3FAX2vg97ZkKte2DkOnD3cHRUdpNkI8v8bvPZvXc3XTt3dXQohfJPoopda46RkmG6ZbCiucXBEYMVcwxcvGXVRa0aft29g74P9MLDw3X+ZxFCCIfISIUfn4Hj68zls79C5Bq4a5hj4yoESTay1ParTRV1FWr71XZ0KIXy/X9uXE2/VOBx9g5WtJ3RYN686eaBi7c7WPFmBoMBjRsyK0IIIQqSeAFWDoVLR7IqVNB9OrQY6tCwCkuSDReWaTRxLd3879ceaEJlP89cF1iSwYpCCOGCzkfAymGQfMVc9qgADy8279zqYiTZcGGXdOmYUOHh7sZjHesUucVBCCGEkziyCn56Dox6czmgFgxbBZWbODau2yR/7mbZHLOZCH0Em2M2OzoUu51PSAOgRoCnJBpCCFEWmEzm1UDXjclONGrdA0/udtlEA6Rlw+qTQ58QlxbHb4d+o2+Dvo4Oxy6x17OSjUAvB0cihBCiWKhUkBKfXW41Gnp/6FIzT3IjyYYLs7RshAY617K0QgghbpNKBQ/MhoQYaNIH2o5xyhVBC0uSjSwvtHyBPw/9SVjLMEeHYrfYBGnZEEIIl6dPAq1vdtndA0b9BG5lZ6RD2XmSIupVuxdttG3oVbuXo0OxmyQbQgjh4v5eCp+0gLiTtvVlKNEASTZcWnY3iiQbQgjhUoyZsGWKecZJ6jVYMQTSEhwdVYmRbhQXlaLP5FpKBiDJhhBCuJS0G7DmMfh3Z3Zdw57g4ZvnKa5OWjayxOhiuGK8QowuxtGh2MXSquGtVvDzko3BhBDCJVz7FxaFZycabu7w4Bzo9R6oy+7f/2X3yQpp7M6xxKXFsWrnKnYO2lnwCQ4Wez0VgCBPBwcihBDCPv/uhu8fgfQb5rJXEAz+Fmrf48ioSoXTtGxERkYSFhZGYGAgkyZNQlHy32FUURTef/99GjRoQKVKlRg3bhwpKSmlFK3jnctKNippi3cnViGEEMVMUXCLWAzLHs5ONIKbwJO7ykWiAU6SbOj1evr06UPr1q2JiIggKiqKJUuW5HvO4sWLmTt3Lt999x379+/n4MGDjB07tnQCdgKxCdKyIYQQrsA3/QJu26aAYjRXNLwfHt8GQXUcG1gpcopkY/PmzSQmJjJ79mzq1avHzJkzWbx4cb7nLF26lEmTJtG2bVsaNWrE9OnT+fHHH0spYsezdKNUlJYNIYRwakleNTB1m2YudHwBhiwHTz+HxlTanGLMxpEjR2jXrh3e3uaVMJs3b05UVFS+58THx1OzZk1rWa1Wo1ar8zxer9ej1+utZZ1OB5i3OzcYDCiYf2krKBgMhtt+ltJy7lpWsuGJS8R7M0u8rhS3xFw6JObSITGXHku8+pZP4FG9FUpoOzCazF9Oyp73urDfB5VS0OCIUjBhwgTS09P57LPPrHXBwcGcOnWKwMDAXM8ZNmwYGo2Gb775BoAhQ4agKAqrVq3K9fhp06Yxffr0HPXLly/H29ub9xPfR6fo8FP5Mdl/cjE8VclRFJh8UE2GScXUuzKpLDNfhRDCaVROPIJ3xlVigsMdHUqJSU1NZdiwYSQmJuLnV3ArjVO0bLi7u6PVam3qPD09SU1NzTPZmDlzJr169eLee+9Fp9Nx9OhR9u3bl+c9pkyZwksvvWQt63Q6QkND6dGjB35+fnyy7hNIA62nlt69exfPg5WQa8l6Mg7sRQUEaaF79+5oNK4z/dVgMLB9+3aXiltiLh0Sc+mQmEuIouD2x+e4HZoNKhV3dOxNRq3Ozh/3Lex5ry29A/ZyimQjKCiIyMhIm7qkpCQ8PPLe5a527dpERUVx8uRJJk+eTJUqVbj33nvzPF6r1eZIaAA0Gg0ajQYV5o1uVKic/gNxKSkZgCp+WtzdMq3P4GpcMW6JuXRIzKVDYi5GmXr4+UU4/J25rCi4n9qIUt/cuuG0cecjv5gL+yxOkWyEhYWxaNEiazkmJga9Xk9QUFC+56lUKvz8/NixYwf79+8v6TCdhmXaa2iQN1B+pvsKIYRTSr4Kq4ZD7B/ZdZ1fgc4vg9HouLiciFPMRunUqROJiYksXboUgFmzZhEeHo5arUan0+U7EGXGjBn873//o1WrVqUVrsOdlw3YhBDCOVw+Bl92zU403L1g4NfQdUqZ20ytKJyiZcPd3Z2FCxcybNgwJk2ahNFoZO/evYB5ZsqcOXPo169fjvNOnz7N8uXLc3TBlHWWmSihAV6Q7uBghBCivDqxAdaOAYP5ZzK+1WHocqje0rFxOSGnSDYA+vXrR3R0NBEREXTo0IHg4GDA3KWSl/r165OYmFhKEToPy4JeoUFecNHBwQghRHn052L4OXvSASGtzetn+FZ1XExOzGmSDYCQkBBCQkIcHYbTs4zZqBHoRZwkG0IIUfpqdTTv0pqRBHcOgr7zQCNLOufFqZINUbBMo4lLiea+k9BAL+IcHI8QQpRLlRvDwK/gyjG45yVQqRwdkVOTZMPFXEpMx2hS8HB3I7hCzqm8QgghSsCV41CxAbjftCRDwx7mL1EgGSrrYm7uQnFzk0xaCCFK3LE18OV95nU0HL/otkuSZMPFWDZgqxnk7eBIhBCijDOZYNcM+OFxyEyHQ8sg8gdHR+WSpBslS8/aPYn6N4qmtZs6OpR8WRf0CpRkQwghSow+GdY9BSc3Zte1HAlN+jouJhcmyUaWF1u+yKZLm+jd0rn3RYnNWtBLWjaEEKKE3DgHK4bClaw1nFRu0HMm3D1WBoLeJkk2XEzs9ZvW2BBCCFG8zh2AlcMhNd5c1vrD/76C+mV3B9fSIMmGi4m12RdFCCFEsTn0HWx4AUxZW2QE1YWhqyC4oWPjKgMk2XAhKfpMrqVkAJJsCCFEsTKZ4MiK7ESjTmf43xLwzn9DUGEfmY2SZcDGAbx9420GbBzg6FDyZFmm3N9Lg5+na21VLIQQTs3NDQYthcDaEPYkjPhBEo1iJC0bWVINqejRk2rZUMcJxV6XwaFCCFFsFMV2wKd3EIzZA16BDguprJKWjSw1/WpS2a0yNf1qOjqUPJ2TwaFCCFE8zuwzbw2fEm9bL4lGiZBkI8vCbgt53u95FnZb6OhQ8iSDQ4UQohj8uRi+7Q8XD8HqUZCZ4eiIyjzpRnEh5xNkQS8hhLhtRgNsmQJ/fpld5+EDRr3tniei2Emy4ULOScuGEELcntTr8P0jcGZvdl2H5yB8OripHRZWeSHJhotQFEUGiAohxO24egpWDIbr/5nLag94cA60HO7QsMoTSTayTN0/lejkaPbv38/7Xd53dDg5xCdnkGYwolJB9QBPR4cjhBCuIXoHrHkM9Inmsk8wDF4GNds5Nq5yRpKNLH/F/UVcZhy6OJ2jQ8mVZY2Nan6eaN2lyU8IIQp06Sgs/x8oJnO5yp0wdDkEOO+sw7JKZqO4CMtMlBrShSKEEPapeqd5p1aAxg/CY1sk0XAQadlwEZZkQ8ZrCCGEnVQq6P0hhLSClqPMq4QKh5B33kVYBofKtFchhMjD5Ug4vdO2zt0DWj8iiYaDybvvImT1UCGEyMfJn2FxD/MiXVeiHB2NuIUkGy7CMkBUulGEEOImigK/fAQrh4MhBTKSYe97jo5K3ELGbLgAg9HExRtZ3SiSbAghhJkhDX56Do59n13X7GF46DPHxSRyJcmGC7h0Ix2TAlp3N4IraB0djhBCOF7SZVg5DC78lV1332tw70TbnVyFU3CabpTIyEjCwsIIDAxk0qRJKIpS4DkffPABVapUwc/Pj4cffphr166VQqSlz9KFUiPQCzc3+Z9ICFHOXTwEC7tmJxoaH/NCXZ0mSaLhpJwi2dDr9fTp04fWrVsTERFBVFQUS5Ysyfecffv28c0337Bv3z7+/vtv0tPTmTBhQukEXMrOybRXIYQAQHVyA3zVC5Iumiv8Q+HxrdCkj2MDE/lyimRj8+bNJCYmMnv2bOrVq8fMmTNZvHhxvuccPHiQ3r1706hRI+rXr8/QoUM5depUKUVcumRreSGEyKLJ2qUVILQdPLnbvHiXcGpOMWbjyJEjtGvXDm9v8y/T5s2bExWV/9SlZs2a8eyzz/LUU0/h6+vL4sWL6d69e57H6/V69Hq9tazTmZclNxgMGAwGFMzdNgoKBoOhqI9UrM7GpwBQ3V9rE5vl384Wb0FcMW6JuXRIzKXDlWPOqHkvqvC3UV2JxNjrQ3DXghM/hyu/1/nFXNjnUSn2DI4oYRMmTCA9PZ3PPsseQRwcHMypU6cIDAzM87xevXqxZcsWAMLCwti7dy9eXrmvQzFt2jSmT5+eo3758uV4e3vzfuL76BQdfio/JvtPLuITFa/Zx9ScTVbxWEMjLSo6/NslhBClxiMziQx1BduxGJZfWzI+w2FSU1MZNmwYiYmJ+Pn5FXi8U7RsuLu7o9XazrLw9PQkNTU1z2Rj9erVnD17lpMnTxIcHMzEiRMZMWIEP/zwQ67HT5kyhZdeesla1ul0hIaG0qNHD/z8/Phk3SeQBlpPLb179y6+hysG047sBgw8FN6RptWyv6kGg4Ht27fTvXt3NBqN4wIsJFeMW2IuHRJz6XCVmFXn/0S9ZiKmduPQtx7jEjHfylXe65vZE7Old8BeTpFsBAUFERkZaVOXlJSEh4dHnuesWLGCp59+mkaNGgEwZ84c/P39uXHjBgEBATmO12q1ORIaAI1Gg0ajQYU5Q1ahcqoPRIo+k4RUc3NVncp+ucZmeQZX44pxS8ylQ2IuHU4d8+EVsOF5MGag3jkNj8pNASePOR+uGHd+MRf2WZxigGhYWBgHDhywlmNiYtDr9QQFBeV5TmZmJleuXLGWL126BIDRaCy5QB3AMu01wFuDn6drfVCFEKLQTEbY/gasHwvGDHNd7XtQqrZwbFyiSJyiZaNTp04kJiaydOlSRo0axaxZswgPD0etVqPT6fDy8sqRRXXs2JHZs2dTo0YNvLy8mDNnDu3bt6dixYoOeoqSce5a1kwU2YBNCFHWpetg7ZNwakt2XZvHoNf7YHJcWKLonCLZcHd3Z+HChQwbNoxJkyZhNBrZu3cvYJ6ZMmfOHPr162dzzvjx47l48SJvv/028fHxtG/fvsDpsvn54cEf2LptKz179CzKoxS72ATzMuWyxoYQoky7fgZWDIWrJ8xllRp6vQdtnzSXTa4zm0Pk5BTJBkC/fv2Ijo4mIiKCDh06EBwcDJi7VHLj6enJ3LlzmTt3brHc30fjg6fKEx+NT7Fcr7hY1tioIbu9CiHKqphfYdVISLtuLnsGwKBvoG4XR0YlipHTJBsAISEhhISEODoMpxIrq4cKIcoykxE2vpSdaFRsAMNWQcV6jo1LFCunGCAq8mYZICpjNoQQZZKbGgZ/C1o/qNcNntghiUYZ5FQtG4607MQyDqUd4vqJ6zza/FFHhwOAoijEXpcxG0KIMi64ETy+zdyqoZZfS2WRtGxkWXZyGbv1u1l2cpmjQ7GKT84gzWBEpYLqATJmQwhRBsRHw7qxkKm3ra/cRBKNMky+s07MsttrNT9PPNwlLxRCuLjTO+H7R0GfaJ5t8tCnsuR4OVHoZENRFPbv38+PP/5IVFQUly9fJj09nSpVqhAaGkrPnj154IEH8Pf3L4l4S8yMDjPYf2A/Hdt1dHQoVucTZLdXIUQZoCjwxwLYOgWUrAUzLh6C9ETwCnBoaKJ0FCrZWLduHS+//DJeXl7079+f5557jqpVq+Ll5cXly5eJjo5mxYoVPPvss4wbN46XX36ZChUqlFTsxapNlTbEaeJoU6WNo0Oxsi7oJcmGEMJVZWbAponw9zfZdY16w4CFoPV1XFyiVNmVbCQlJTFixAhOnDjBhx9+SN++fXMc06hRIzp37swTTzxBTEwMEydOpGnTpqxfv55WrVoVe+DlgWUmigwOFUK4pJRrsHoknN2fXXfPS3Df6+AmXcPlSYHJhtFopHPnztSsWZNDhw7h41Pwole1a9dmzZo1fPHFF3Tt2pUDBw7QpEmTYgm4PLHMRAmVBb2EEK7mShSsGAw3zpnLaq15jEbzQY6NSzhEgcmGWq1m1apV1K9fH1UhB/I8/fTTdOvWjYYNG952gKUl4koE0YZoIq5E0L5Ge0eHA2QPEJU1NoQQLuXSUfi6F2Qkm8sVqsCQ5VDDebqpRemyqx2rQYMGNolGdHQ0O3fu5OjRo5hMue+Ok5KSwrx581wi0QB47bfX+CblG1777TVHhwKAwWjiUqKssSGEcEGVm0D1luZ/V2sBT+6WRKOcK1SnWVJSEuHh4TRu3JgePXrQsmVL7rjjDk6cOGE95uzZs0yYMIEaNWowfvz44o633Lh4Iw2TAlp3N4J9tY4ORwgh7KfWwKCl0O4ZeHQL+Ms2FOVdoZKNmTNnsmfPHsaPH8+GDRuYP38+KSkpDB48mF9++YWBAwdSv3595s2bR+/evfnjjz9KKu4yL3u8hnehu6+EEKJUJV2Bq//Y1nkHwf3vgoe0zIpCTn1ds2YNI0eO5KOPPrLW1axZk169etGlSxcCAgKYOHEizz33HNWrVy/2YMuT7PEaMjhUCOHELh0xbw2vUsOY3eBTydERCSdUqJaNs2fP0qFDB5s6y7TWKVOmcP78ed59911JNIqBTHsVQji9qB/hq/tBdwESz8GmSY6OSDipQrVsZGZm5pj66pY1V/q+++7Dy0v+Ci8ulq3lZUEvIYTTURTY+z7smZldVyMM7p/luJiEUyv0cuWfffYZGzdutJYzMjJQqVS88847LFq0yOZYlUrFd999V/QoyyFLslFDpr0KIZxJRir8+AwcX5dd13wI9PkENJ6Oi0s4tUInG7///ju///57jvrdu3fnqJNk4/bFJsi0VyGEk0m8ACuHmsdpAKCC7tOhw/OyoZrIV6GSjbzW1BDFK1mfyfWUDEBWDxVCOInzEbByGCRfMZc9KsDDi6HR/Y6NS7iE29pi/sCBAxw9epS0tDQaNWpEeHg47u6yW31xsXShBHpr8PXUODgaIYTAvEurJdEIqAVDV0KVpo6NSbiMQmUIN27cYPDgwWzfvt2mvkGDBqxYsUI2XCsmMjhUCOF0wp6AK8ch/hQM+hZ8Kjo6IuFCCjX1dcKECfz2228sX76cS5cuce3aNfbu3YuHhwf/+9//UBSlpOIsV85JsiGEcDRjpm1ZpYLeH8DI9ZJoiEIrVLLx008/MXbsWIYMGUKVKlUIDAzk3nvvZfbs2cTExHDkyJGCLyIKdD5rcKhswCaEcIiEGFjYGU5usq1Xa8DdwyEhCddWqGTj2rVr3HHHHTnq77zzThRFISEhodgCK8+yWzZkcKgQopTF7Icv74MrkbD2SXPXiRBFVOhRnVptzk3BNBoZxFicLGM2ZNqrEKJU/b0UNr4EJoO57FsV1LIRpCi6Qicbr7/+Oh9//LFNXWZmJiqVimeeeQZfX19rvUqlks3YCklRFOtS5dKNIoQoFcZM2P46HPg8u67efTDwK/AKdFxcoswoVDdKzZo1MRqNXL161eYrISGBmjVrkp6eblMfFxdn97UjIyMJCwsjMDCQSZMmFTjYdNq0aahUqhxfe/bsKcwjOZ2ryXrSDSbcVFA9QLpRhBAlLO0GLB9km2jcPRaGfS+Jhig2hWrZiImJKZEg9Ho9ffr0oWfPnqxcuZLnn3+eJUuW8Oijj+Z5ziuvvML48eOt5XPnzhEeHk7Lli1vK4YRjUdwKOoQLRvf3vnFxbK1fDV/LzzcC5ULCiFE4Vw7Dd+PhGvR5rKbO/T+ENrk/bNXiNtRqN9m+/bt4+rVq8UexObNm0lMTGT27NnUq1ePmTNnsnjx4nzP8fT0JCAgwPr16aef8uKLL+Lv739bMYxoMoJuXt0Y0WTEbZ1fXLL3RJFWDSFEyVEpmbivHJKdaHgFwagfJdEQJaJQyUbXrl1zLOhVHI4cOUK7du3w9jaPUWjevDlRUVF2n3/x4kXWrVvHc889V+yxlTYZHCqEKA2Kyh1jrw9BpYbgJvDkLqh9j6PDEmVUobpRSmrRLp1OR506daxllUqFWq0mISGBwMCC+wznz5/PsGHDqFChQp7H6PV69Hq9zT0BDAaD9ctSdqSYa8kAVPfXFhiLs8RcWK4Yt8RcOiTm0mGJNSO0Iwz8BqVWR9D6ghM/gyu+z+CacdsTc2GfR6UUIoNwc3Nj9OjRhIWF2X2DZ555psBjXn75ZQwGA7Nnz7bWhYaGcuDAAUJCQvI912g0UqNGDXbt2kWTJk3yPG7atGlMnz49R/3y5cvx9vZGr+hRUFChQqty3FSvecfdOK1zY2R9I22CZUVWIUTx0GQmUevaPk5X7i07tIoiS01NZdiwYSQmJuLn51fg8YVONgpDpVJhNBoLPO69994jMjKSb7/91loXEBBAdHQ0wcHB+Z67Y8cOXnzxRY4dO5bvcbm1bISGhhIfH4+fnx891/XkatpVgr2C2dp/a4Exl5TOH+7jYmI6q55sS6uaAfkeazAY2L59O927d3eptU5cMW6JuXRIzCXk6j+4rx6O6kYMxvveQN/maeeP+RYu8T7nwhXjtidmnU5HpUqV7E42Cr3Oxpw5c3jooYcKe1q+wsLCWLRokbUcExODXq8nKCiowHNXr15N//79CzxOq9XmuSCZRqNBhTnTV6Fy2AfCYDRxWZcOQJ3KvnbHYXkGV+OKcUvMpUNiLkantsGaxyAjCQD1wYVoWpkHgTptzPlwxZjBNePOL+bCPkuhk41KlSpRq1atwp6Wr06dOpGYmMjSpUsZNWoUs2bNIjw8HLVajU6nw8vLK88H27JlC998802RY2hduTXRF6JpULlBka91uy7eSMOkgKfGjeAKsmqfEKIIFAV+mwfb3wCyGrCr3glDVpjHZwhRipxiIQd3d3cWLlzI2LFjqVKlCmvWrGHWrFmAeWbKzz//nOt5//77LxcvXizUGJK8vNPxHR6p8AjvdHynyNe6Xees0169UUmfqhDidmXqYf0z5lVBLYlGk77w2FYICHVoaKJ8KlTLhslkKqk46NevH9HR0URERNChQwfrWI38FhKrV68emZmZeb7uaiwLesm0VyHEbUuOg1UjIPamrSI6vwydX4FCjrsTorjY9clbsWIF165du60bfPXVV2RkZNh1bEhICA899FCBg0LLKutur7KglxDidlw9Zd6x1ZJouHvBwK+h66uSaAiHKvDTZzQa+fHHH7n77rsLtdBWeno6w4YN47333uPixYtFCrK8sG7AJi0bQojbUSEY1B7mf/tWh8c2Q7MBjo1JCOxINtRqNStXrmTs2LG0b9+eSZMmER8fn+fxJpOJVatW0ahRI5KTk/njjz+oXbt2ccZcIsbsHMNc3VzG7BzjsBjOX5dkQwhRBF6BMHSlecfWMbuhumP3ehLCwu4xGxMnTmTQoEG8/vrr1K1blzZt2tCuXTuqVq2Kp6cnV65cITo6mk2bNlG3bl3mz59Pr169SjL2YnVOd444UxzoHBiDLFUuhCgMQxpkpIJPxey64IYwcp3jYhIiF4XeYv6bb77hypUrjB8/Hj8/P86cOcOhQ4fIzMykU6dO/P333xw8eNClEg1nkJRuICHVvPyrtGwIIQqkuwRf94IVQ8yzT4RwYoVeZwPAy8uLvn370rdv3+KOp9yyzEQJ9NZQQXtb3xYhRHlx4S9YORySLpnLW16BBz92bExC5EN+qzkJy+BQ6UIRQuTr2Br4cRxkmlcbJqAmhD3h2JiEKIAkG07CsrV8DUk2hBC5MZlgz0zY90F2Xc0OMPhb8KnkuLiEsIMkG04iVgaHCiHyok+GdU/ByY3ZdS1HwgOzwd3DcXEJYadiSTaSk5OJjo6mXr16ACQkJBT7/illXWyCecxGaKAkG0KIm9w4ByuGwZWsna1VbtBzJtw9VraKFy6jSEvK6fV6Ro8eTVBQEG3atCEiIoITJ05Qp04dhg0bRnp6enHFWeZZVw8NktVDhRA3ifgqO9HQ+sPw76Hd05JoCJdSpGTj9ddfZ82aNYwbNw5FMW/207RpU2bOnMlPP/3EtGnTiiPGMk9RFOlGEULkrutUqNMZgurCEzugfrijIxKi0IqUbKxatYpJkybx2muvWet8fX155ZVXmDhxIsuXLy9ygOXB1SQ9+kwTbiqoHiAtG0KIm6g1MOgbeGKnecEuIVxQkZKN+Ph4QkNz3644MDCQ69evF+Xy5YZl2ms1fy80atksSYhyKz0RVo+CS0dt670CwTvIMTEJUQyK9JutQ4cOrF69OsfW84mJiXzxxRd06NChSMGVFzJeQwjBtX9hUXeI+hFWDoPkq46OSIhiU6Rk44MPPuD333/n3nvvRaVS8cUXXzB8+HDq16/PpUuX+OCDDwq+iLCuHirjNYQop87sg0XdIP4fczkjGW6cdWxMQhSjIiUbd911FwcPHqRly5YEBwezfv16du7cSXh4OH/88QctWrQorjjLNMvgUJn2KkQ59Odi+LY/pCWYy5UawZO7oEYbx8YlRDEq8jobjRs3ZsWKFcURS7l1TraWF6L8MRrMe5r8uSi7rkEPeHgRePo7Li4hSoCsIOoEzlsW9JJkQ4jyIfU6fD/a3H1i0f5Z6P4WuKkdF5cQJaRI3ShvvfUWkZGRub42cOBAlxog6q3xRosWb03p/sLPyDRxMdGSbMgAUSHKvMwM+Or+7ETDTQMPfQY935FEQ5RZRUo2pk2bxtGjR3N9LTw8nEOHDhXl8qVq7YNreT3gddY+uLZU73vxRhqKAp4aN4IraEv13kIIB3D3gLvHmP/tXQke2QgtRzg2JiFKWIl1oxgMBnx9fUvq8mWGZY2N0EBvVLL8sBDlQ9gT5s3Vmg0wbxEvRBlX6GRj37597Nmzx1peu3Ytp0+ftjlGp9OxdOlSBgwYUOQAyzoZHCpEGZeZAf/tgYY9bOvvGe+IaIRwiEInG4cOHeLrr7+2lvft28dff/1lc0zFihV5/PHHeeONN4oeYRkna2wIUYalxMOqkXDuNxiyHBo/4OiIhHCIQicbL7zwAi+88AIAbm5uzJkzh2HDhhV7YKXt40MfE5UaxT+H/mFy28mldl/LGhs1AmVwqBBlypXjsHwIJJ4zl396Dup2AQ8fh4YlhCPIRhxZtsZs5a+Mv9gas7VU72sZsyEtG0KUISd/hsU9shMN32rmreEl0RDlVJEGiO7evZsmTZoUVyzlkozZEKIMURT4dTbsfBtQzHXVW5m7UPyqOTQ0IRypSC0bnTt3pnLlynm+fvWq/RsJRUZGEhYWRmBgIJMmTUJRFLvPHTJkCM8995zdx+dmfrf5POf7HPO7zS/SdQojKd3AjVQDIMmGEC4vMx3WjoGdb2FNNJoNhEc3SaIhyr0iT31dvHgxW7duJT4+3qY+PT2dY8eOkZSUVOA19Ho9ffr0oWfPnqxcuZLnn3+eJUuW8OijjxZ47tatW9m1axenTp267WcAqO1XmyrqKtT2q12k6xSGZXBokI8HFbSymKsQrkpruIH6275w8e/syvteh3sngExpF6Loi3qNGzcOg8HAH3/8QXJyMvXq1SM6Opq///6b559/3q7rbN68mcTERGbPnk29evWYOXMmixcvLvC8tLQ0nnnmGWbNmkVAQEBRHsUhrF0oMjhUCJfmbkxHdf0/c0HjA4OXQaeJkmgIkaVIf05/8803TJo0ibfffpunn36aS5cu8eWXXxIXF0fLli3RaDR2XefIkSO0a9cOb29zV0Lz5s2Jiooq8Ly3336btLQ03N3d2bVrF127ds1zYSy9Xo9er7eWdTodYF58zPJlKZeWs/HmVp8aAV63dV9HxFwcXDFuibl0uGrMKZ5V0fddgHb7K2Q+/DVUaQZO/Ayu+j7f/F9X4Ypx2xNzYZ9HpRRmcMQtKlSowCeffMLjjz/O8uXLGT9+PHFxcYA5EVi0aBFnz54t8DoTJkwgPT2dzz77zFoXHBzMqVOnCAwMzPWcc+fO0bBhQ9q2bUuPHj1Yt24dNWvWZO3atbkmHNOmTWP69Ok56pcvX463tzdHMo5gUAxoVBpaeLSw9y0okjX/ufHLFTfCq5voU8tUKvcUQhQDxYRKMaG42f69pjJl5qgToixKTU1l2LBhJCYm4ufnV+DxRfq/onHjxqxZs4YRI0bQqVMn4uPjiYyMpFmzZgQEBHDt2jW7ruPu7o5Wa7sviKenJ6mpqXkmG0uWLKFKlSps374drVbLCy+8QK1atdi+fTs9evTIcfyUKVN46aWXrGWdTkdoaCg9evTAz8+PT9Z9wtW0qwR7BTOl95RCvAu3b+23f8OVeLqENaN3mxqFPt9gMLB9+3a6d+9udyuSM3DFuCXm0uESMWekoN7wLLhrMT7wBYbMTOeP+RYu8T7fwhVjBteM256YLb0D9ipSsjFt2jQGDBjAqFGjWLVqFe3bt6dfv3707NmT77//nrvvvtuu6wQFBeXYPTYpKQkPD488zzl//jzdunWzJim+vr40aNCAM2fO5Hq8VqvNkdAAaDQaNBoNKsytISpUpfaBsGwtX7uSb5HuaXkGV+OKcUvMpcNpY74RCyuHwuVjALhVuQPamWfCOW3M+ZCYS48rxp1fzIV9liINEH3wwQf59ddfeeAB8xK83377LTVq1GDp0qXUrVuXzz//3K7rhIWFceDAAWs5JiYGvV5PUFBQnueEhoaSlpZmLZtMJs6fP0+tWrVu82lKl6Io1mRDFvQSwgXEHoQv77MmGmj9zGMzhBAFKnLnYtu2bWnbti0AdevWtdmkzV6dOnUiMTGRpUuXMmrUKGbNmkV4eDhqtRqdToeXl1eOLGrQoEG0bt2aH374gbvvvpt58+ah1+vp2LFjUR+pVFxN0qPPNOGmgmoBno4ORwiRn8MrYMPzYMwwlwPrwNCVULmxUw8EFcJZ3FbLRnR0NDt37uTo0aOYTLkPbExJSWHevHl2Xc/d3Z2FCxcyduxYqlSpwpo1a5g1axZgnpny888/5zinUaNGrFq1ihkzZtCgQQN+/vlnfvzxR5fZ1t4y7bWavxcatawaL4RTMhlh+xuwfmx2olH7XnhylznREELYpVAtG0lJSfTv35/du3db6xo2bMjatWuty5afPXuWuXPn8tVXX6HT6exe2bNfv35ER0cTERFBhw4dCA4OBsxdKnl54IEHrF04rkb2RBHCyaXr4IcnIPqm/ZLaPAa93ge1a/W9C+FohfqTeubMmezZs4fx48ezYcMG5s+fT0pKCoMHD+aXX35h4MCB1K9fn3nz5tG7d2/++OOPQgUTEhLCQw89ZE00yrJz18zjNUKDZEEvIZzSzunZiYZKDb0/hAc/lkRDiNtQqJaNNWvWMHLkSD766CNrXc2aNenVqxddunQhICCAiRMn8txzz1G9evViD7YskZYNIZzcfa/Df3sg5Sr87xuo19XREQnhsgqVbJw9e5bJkyfb1LVq1Qowr2MxdepUvLzkL3V7xMpur0I4N68AGLba/O+K9RwaihCurlDdKJmZmfj4+NhewM18ifvuu08SjUKwJBs1AiXZEMLhjJmweyYkXbGtr1hPEg0hikGhp75+9tlnbNy40VrOyMhApVLxzjvvsGjRIptjVSoV3333XdGjLGMyMk1c0qUD0o0ihMOlJcD3j8J/u+HfXTB6I2hkOroQxanQycbvv//O77//nqP+5hkqFpJs5O7CjTQUBbw0aipVyHuVVCFECYs/DSsGw7XT5vLFw3D+T6hzr0PDEqKsKVSykdeaGqJwssdreOW5S60QooT9uwu+fwTSE81l74rmreFrdXBoWEKURbI9oQNYFvQKlfEaQpQ+RYE/FsDWV0ExmusqNzWvCBroGtsdCOFqJNlwAMu0V5mJIkQpy8yATRPh72+y6xr1hgELQesaqw8L4Yok2XCA89ctC3pJsiFEqTGkw7KH4eyv2XX3vAj3vQFusmWAECVJ/g9zgOxuFJkqLESp0XhClTvM/1Zrof9CCJ8miYYQpUBaNrK80PIF/jz0J2Etw0r8XtbVQytKy4YQparnTEi/AW3HQI02jo5GiHJDko0svWr3QolS6FW7V4neR5du4EaqeUtqGSAqRAlSFPOU1koNsuvU7ubxGUKIUiXth6XMMu21oo8HPlrJ9YQoEYZ0WDcWFnSCS0ccHY0Q5Z4kG6XMuky5DA4VomQkXYFvHoSjK8GQCiuHgyHN0VEJUa5JspElRhfDFeMVYnQxJXqf2KyZKLJMuRAl4OJh+LKreRVQAI039HwHNDIYWwhHKpZ2/OTkZKKjo6lXz7xhUUJCArVqudbiOGN3jiUuLY5VO1exc9DOEruPdY0NmYkiRPE6vt7cdZKZ1YrhVwOGLodqLRwalhCiiC0ber2e0aNHExQURJs2bYiIiODEiRPUqVOHYcOGkZ6eXlxxlhnnZGt5IYqXosCe9+D70dmJRo0weHKXJBpCOIkiJRuvv/46a9asYdy4cSiKAkDTpk2ZOXMmP/30E9OmTSuOGEtFz9o9ae3Rmp61e5bofSxjNqQbRYhikJFq3t9kz8zsuhZDzTu3+lZxWFhCCFtFSjZWrVrFpEmTeO2116x1vr6+vPLKK0ycOJHly5cXOcDS8mLLF+nv3Z8XW75YYvcwmRRiE7JWD5Vpr0IU3ZVIOLkxq6CC7m9Bvy9ki3ghnEyRko34+HhCQ0NzfS0wMJDr168X5fJlztVkPRmZJtRuKqoFyA9DIYostC30/gA8Kpg3Uuv4AshOykI4nSIlGx06dGD16tU5tp5PTEzkiy++oEMH2ar5ZpYulGr+nmjUMhFIiGLR5jF47i9odL+jIxFC5KFIv/E++OADfv/9d+69915UKhVffPEFw4cPp379+ly6dIkPPviguOIsE2RreSGKwGSCHdNgXy4/V3yrlno4Qgj7FSnZuOuuuzh48CAtW7YkODiY9evXs3PnTsLDw/njjz9o0cJ1RoIP2DiAt2+8zYCNA0rsHrLGhhC3SZ8Eq4bDrx/DrhlwYoOjIxJCFEKR19lo3LgxK1asKI5YHCrVkIoePamG1BK7R/a0V1ljQwi7JZyFFUMh7ri5rHKD5CuOjUkIUShFatk4ckT2HCgM64Je0rIhhH3O/mZeEdSSaGj9YfgaCHvCsXEJIQqlSMlGy5YtadCgAa+++ip//fVXkQKJjIwkLCyMwMBAJk2aZF23Iz99+vRBpVJZv8LDw4sUQ0mLlQW9hLDf30vhm76Qes1crlgfntwJ9bs5Ni4hRKEVKdn4+eefue+++1iyZAlt27albt26TJo0iT/++KNQ19Hr9fTp04fWrVsTERFBVFQUS5YsKfC8v/76i2PHjpGQkEBCQgI//vjjbT5JydNnGrmsM6+oKmM2hMibSjHitn0q/PQcmAzmyrpd4YkdttvFCyFcRpGSjV69erFgwQIuXrzIL7/8wsCBA9mwYQMdOnSgZs2avPTSS3ZdZ/PmzSQmJjJ79mzq1avHzJkzWbx4cb7nnD9/HkVRaNasGQEBAQQEBODj41OUxylRF2+koyjgpVFT0cfD0eEI4bSanf8O9cEF2RV3jzV3nXgFOi4oIUSRFNtiDx06dOD9999n3759PPvss5w/f55PPvnErnOPHDlCu3bt8PY2/8XfvHlzoqKi8j3n4MGDGI1GatSogY+PD0OGDCEhIaHIz1FSbh4cqpJFh4TI03+Ve6J4BoCbOzw4B3q9B+pi2TNSCOEgxfJ/8H///ce6detYv349Bw4cwNvbmyFDhvC///3PrvN1Oh116tSxllUqFWq1moSEBAIDc/9r5tSpU7Ru3ZoPP/wQNzc3Hn30UV599VW++OKLXI/X6/Xo9XqbewIYDAYMBgMK5jEiCgoGg8GuuAsj5moSADUCvIrt+pbrlES8JckV45aYS4fBYCBFWwX9Q4tw17ij1LoHnDx+V32fb/6vK3DFmME147Yn5sI+j0qxZyRmHt58803WrVvH8ePH8fPzo0+fPgwcOJD7778fDw/7uwpefvllDAYDs2fPttaFhoZy4MABQkJC7LrG3r17GThwIFevXs319WnTpjF9+vQc9cuXL8fb25v3E99Hp+jwU/kx2X+y3bHb68ezbuy66EanqiYermMq+AQhyomQhANc8m+FyU26F4VwFampqQwbNozExET8/PwKPL5ILRufffYZffv2ZdasWXTv3h2NRnNb1wkKCiIyMtKmLikpqVAJS0BAAPHx8ej1erRabY7Xp0yZYjOGRKfTERoaSo8ePfDz8+OTdZ9AGmg9tfTu3fu2niM/m1cegYtXuLdVE3q3r1Us1zQYDGzfvr1I770juGLcEnMJMBpw2/Yq6pivMd0xAONDCzBkZjp3zLlw+vc5FxJz6XHFuO2J2dI7YK8iJRtXrlxBrVYX5RIAhIWFsWjRIms5JiYGvV5PUFBQnucMHDiQiRMn0q5dOwD+/PNPqlatmmuiAaDVanN9TaPRoNFoUGEeR6FCVSIfiPM3zKuH1q7kW+zXtzyDq3HFuCXmYpJ6HVaPgphfAHA7vha31o9AqHk/JaeMuQASc+lwxZjBNePOL+bCPkuRBogWR6IB0KlTJxITE1m6dCkAs2bNIjw8HLVajU6ny7VvqHnz5rz44ov88ccfbNy4kddff51nnnmmWOIpCZalymX1UFHuxZ00L9SVlWig9oD+C6BuZ8fGJYQoMU4xxNvd3Z2FCxcybNgwJk2ahNFoZO/evYA5qZgzZw79+vWzOWfKlCmcPXuW7t27U7lyZZ5++mmmTJnigOgLlphmIDHNnDDJJmyiXDu1DdY8BhnmAdP4VIYh35m3ihdClFlOkWwA9OvXj+joaCIiIujQoQPBwcGAuUslNxqNhsWLFxe4HoczsKwcWtHHAx+t07zlQpQeRYHf5sH2NyBr5hdVm8PQFeBfw6GhCSFKXqF+8+3bt48mTZpYE4F9+/YVeE6nTp3svn5ISIjds09cyXnZE0WUZ5kZsHE8HP4uu65JX+g/HzycdyE+IUTxKVSy0aVLF5YtW8awYcOsZZVKlec+JiqVCqPRWPQoXdw52RNFlGe37tLa+RXo/DK4FduagkIIJ1eoZOPMmTPWVg1LWRTMMji0pgwOFeWR2h0GfgXf9IGO46HZAEdHJIQoZYVKNmrVqpVv2ZXV9KsJ+qz/FjPr1vIyOFSUF/ok0Ppmlz394ck90pohRDkl/+dnWdhtIc/7Pc/CbguL/drSjSLKDUWBfR/AZ3dD0mXb1yTREKLckv/7S5jJpHA+wdKNIsmGKMMMafDD47BrBuguwMphkKkv+DwhRJkn8zBLWFySnoxME2o3FdX8PR0djhAlQ3fRnFxcPJRVoYLGD5oX7BJClHtFatl46623cuxpYjFw4EA6dOhQlMuXCZbxGtUDPHFXS0OSKIMu/AULu2YnGhof80Jd974EKpVjYxNCOIUi/fabNm0aR48ezfW18PBwDh06lOtrzmjq/qksSV7C1P1Ti/W6567J4FBRhh1bA1/3huSs8Rn+NeHxbdD4AcfGJYRwKiXWjWIwGPD19S34QCfxV9xfxGXGoYsr3E52BbG0bMh4DVGmmEyw+x345cPsuprtYfAy8KnkuLiEEE6p0MnGvn372LNnj7W8du1aTp8+bXOMTqdj6dKlDBgg8+mzN2CTZEOUIf/tsk00Wo6ABz4GdxmjIYTIqdDJxqFDh/j666+t5X379vHXX3/ZHFOxYkUef/xx3njjjaJHWEp+ePAHtm7bSs8ePYv1upZ9UWoEyoJeogypHw53Pw0HF0CPd6Dd0zI+QwiRp0InGy+88AIvvPACAG5ubsyZM8e6fLkr89H44KnyxEdTvHs1SDeKKLN6zIBmD0NomKMjEUI4OZkeUYL0mUYu69IB6UYRLu7Qd3B8vW2d2l0SDSGEXYo0QHT37t00adKkuGIpcy4kpKEo4O2hpqKP9GULF2QymreF//1TcPeCwNpQ/S5HRyWEcDFFatno3LkzlStXLq5YHGrZiWXsTNvJshPLiu2asVkrh4YGeqOS/mzhatITYcUQc6IBkJkGp7Y4NiYhhEuSFUSzLDu5jDh9HMdPHufR5o8WyzWz90SRwaHCxVz/D5YPgfh/zGU3d+j1PoQ97ti4hBAuSZKNEnReNmATrujMPlg9CtISzGWvQBi0FOp0cmxcQgiXVahkY9++fTRp0oTg4GBruSCdOpXfH1DWlg1ZPVS4ij8Xw+bJYMo0lys1gmErIaiuY+MSQri0QiUbXbp0YdmyZdaprl26dEGlUqEoSq7Hq1QqjEZj0aN0UTLtVbiUnW/bLtTVoAc8vAg8/R0XkxCiTChUsnHmzBlrq4alLPJm3RdFkg3hCup1hf1zzK0aHZ6D8OngpnZ0VEKIMqBQyUatWrXyLYtsiWkGdOnmpmgZICpcQu174MGPQaWGlsMdHY0QogyRAaIlxLJMeaUKHnh7yNssnNDFw1Cthe0y461GOSwcIUTZJSuIlpDsPVGkC0U4GUWB3z+HL7vC3vcdHY0QohyQZKOEyOBQ4ZQyM+Cn52DrFFBMsGcmnP3d0VEJIcq4IicbCxYs4NtvvwXg8uXLPPzww9SrV4/Ro0eTlJRU5ABdlSzoJZxO8lVY2hcOfZtd12kShN7tuJiEEOVCkZKNt99+m2effZaLFy8C8PTTT7Njxw5atGjBypUrmTRpUrEE6Ypir5uXKpeWDeEULkfCl/fBuaxWDHdPeHgx3PcauEkDpxCiZBXpp8zixYuZMGECL7/8MmlpaWzatIkFCxawdu1aJk2axI8//mj3tSIjIwkLCyMwMJBJkybluXZHbgwGA3feeSd79uy5jacoGbGyoJdwEqp/NsHiHpB4zlxRoSo8ugnuHOjYwIQQ5UaRko2rV6/SsGFDAP7++28yMzPp1asXAPXq1SM5Odmu6+j1evr06UPr1q2JiIggKiqKJUuW2B3H+++/T2RkZKHjLykmk8J5yyZs0rIhHEVRaHB5A+o1o8GQYq6r3hLG7IaQ1o6NTQhRrhQp2ahbty4bN24kJSWFpUuXUr9+ffz9zasN/v3339Sta98Sx5s3byYxMZHZs2dTr149Zs6cyeLFi+06Nzo6mg8//JDatWvf7mMUu7gkPRlGE2o3FdX8PR0djiivDKnUSPgNFVmthM0ehkc3g191x8YlhCh3irQAxKRJk3jkkUfw8/MD4IMPPgBg1KhRLF++nE8//dSu6xw5coR27drh7W1uBWjevDlRUVF2nfvUU0/xyiuvsHnz5nyP0+v16PV6a1mn0wHmLhiDwYCS9QNZQcFgMNh177z8F2e+djV/TxSTEYOpZJZst8RZ1HhLmyvG7ZIxqzz4o+6LhJ+ZiantWEwdXwRU4MTP4JLvs8RcKlwxZnDNuO2JubDPo1IKMzgiFzt27GD//v2EhYXRu3dvwDxQtH379owaZd8CQRMmTCA9PZ3PPvvMWhccHMypU6cIDAzM87yvv/6aTz/9lD/++IPw8HCmTZtGly5dcj122rRpTJ8+PUf98uXL8fb25v3E99EpOvxUfkz2n2xX3Hk5eFXFd6fVNPQ3Ma6pqUjXEqJQFMV2kS5Ak5mCwd3HQQEJIcqi1NRUhg0bRmJiorXBIT9FXtoyPDyc8PBwm7ovvviiUNdwd3dHq9Xa1Hl6epKamppnsnH16lWmTJnCli1bcHcv+DGmTJnCSy+9ZC3rdDpCQ0Pp0aMHfn5+fLLuE0gDrafWmjTdrtO7TsPp/7irfii9e99RpGvlx2AwsH37drp3745Goymx+xQ3V4zbFWJWnfgRt4hFGIesAo23NeYuvfo5bcy3coX3+VYSc+lwxZjBNeO2J2ZL74C9imUd7dTUVH7//XeuXr1KpUqVaN++PT4+9v8lFRQUlGOAZ1JSEh4eHnmeM378eB5//HHuuusuu+6h1WpzJDQAGo0GjUbDOx3eYf+B/XRs17HIH4gLiebumlqVKpTKh8vyDK7GFeN2yphNJtg7C/a+B4Dbz+Nh4FfWl50y5gJIzKVDYi49rhh3fjEX9lmKPMF+4cKFhISE0KNHD4YNG0aPHj0ICQlh/vz5dl8jLCyMAwcOWMsxMTHo9XqCgoLyPGf58uXMmzePgIAAAgIC+PXXX3nwwQeZNWvWbT1HmyptaKBpQJsqbW7r/Judvy4zUUQpyUiB70dbEw0ANN7mnVuFEMJJFKllY9myZYwdO5bevXszZswYQkJCuHDhAl9++SXjxo2jQoUKjBgxosDrdOrUicTERJYuXcqoUaOYNWsW4eHhqNVqdDodXl5eObKoW7e3HzJkCOPHj+f+++8vyiMVC+vqoYGyeqgoQYnnYcUQuHzMXFa5Qfe3of0487gNk+sMSBNClG1FSjbeeecd+vTpY7N4V+vWrenbty8PPfQQ77zzjl3Jhru7OwsXLmTYsGFMmjQJo9HI3r17AfPMlDlz5tCvXz+bc26d6urp6UnVqlUJCAgoyiMVWbrByJWkdEBWDxUlKPYgrBwOKXHmstbPvCJowx6OjUsIIXJRpGQjJiaG5557LtfXevbsybZt2+y+Vr9+/YiOjiYiIoIOHToQHBxsvYc9irp6aMSVCKIN0URciaB9jfa3fZ0LN9JQFPD2UBPkk/eYEyFu2+EVsOF5MGaYy4F1YOhKqNzYsXEJIUQeijRmo0mTJnz//fc5lhZXFIXvv/+eJk2aFOp6ISEhPPTQQ9ZEozS99ttrfJPyDa/99lqRrmNZprxmkDeqW6YgClFkp7bC+rHZiUbte+HJXZJoCCGcWpFaNmbMmEHfvn1p27Ytjz76KFWrVuXSpUssWbKEQ4cO8dNPPxVXnC7DkmzUkD1RREmoHw71u8Pp7dDmMej1Pqhda4S7EKL8KVKy0bt3b9auXcv48eN59tlnrfW1a9dmzZo1RV6vojSNaDyCQ1GHaNm4ZZGuE5sgu72KEuSmhoGL4Z/N0GKIo6MRQgi7FHmdjb59+9K3b1+io6Ot62xYNmdzJSOajCDoTBC9mxQtQbLu9hokM1FEMYj5FTRethunefpLoiGEcCm3lWxcuHCB48ePk5aWRsOGDWnSpAkNGjSgQYMGxR2fyzknW8uL4hLxNWyaCN6VzDu1ygZqQggXVagBonq9nqeeeoratWvTq1cv+vfvT7NmzbjvvvtyrHtRXlkHiFaUZEPcJmMmbJoMG8ebF+dKvgy/f1bgaUII4awKlWy8+uqrLFmyhLfffpvffvuNv/76iyVLlnD69Gn69+9fUjGWihRDCulKOimGlNu+RmKqAV26eeXGGrKgl7gdaQnw3UA4uCC7rt04CM+5iaAQQriKQnWjrFy5kscee4xXXnnFWteyZUsqVKjAwIEDiYqKomnTpsUeZGl4eOPDxKXFsXDjQnYO2nlb14hNMLdqVKqgxdujWLadEeVJfDQsHwzX/zWX3TTw4GxoZd/uyUII4awK1bJx+fJlwsLCctS3bdsWRVG4cuVKsQXmis7J4FBxu07vhC+7ZSca3hVh9E+SaAghyoRC/fmtKAqenp456i11ty7uVd7EyuBQcTsOfgmbJ4NiMpcr3wFDV0BgLcfGJYQQxaTQbf1z585l/fr1NnUZGRmoVCreeustm91eVSoVq1atKnKQrsLSjSJrbIhCcffMTjQa9YYBC0Hr69iYhBCiGBU62Th48CAHDx7M9bV9+/bZlMvbct3nrFvLSzeKKIRWI+HqSVB7wH2vg1uRdhEQQginU6hkw2QylVQcZcJ565gNadkQ+Ui5Bj4Vbet6zDBvCy+EEGWQ/AlVTEwmhfNZS5XLmA2Rp3+2wNy7IPIH23pJNIQQZZgkG8XkSlI6GUYT7m4qqvnnHEQryjlFgV/nwIohoNfB+mfg8jFHRyWEEKVCFoMoJrFZ4zWqB3jhrpYcTtzEkA4bXoCjK7PrGvWCoHqOi0kIIUqRJBvFRNbYELlKugKrhsP5P7Pruk6FTpOk60QIUW5IslFMrHuiyOBQYXHpCKwYCroL5rK7F/SfD3f0c2hYQghR2iTZKCaWZKOGDA4VAMfXw/qnwWD+XOAXYl6oq1oLh4YlhBCOIMlGMZEFvYRVug5+npCdaNQIg8HfgW8Vx8YlhBAOIiMZi8k5WWNDWHj6waCl5o3Umg+B0Rsl0RBClGvSslEM0g1Gruj0gLRsiCy1O8KYPVDlDhkIKoQo94qtZSMhIQGDwYBer0ev1xfXZV3ChRvmaa8+HmoCvTUOjkaUuvMRsPEluHWF3arNJNEQQgiKmGyYTCbefPNNqlatSnBwML/88guHDx8mMDCQV199tdzsAntzF0p52w+m3DuyCr7uDRGLYe97jo5GCCGcUpGSjQ8++IAZM2bQsWNHa2JRr149Ro0axYcffsiHH35YLEGWhtaVW1PfvT6tK7cu9LmyJ0o5ZDLBjmmwbgwYs1ryzu4Ho8GhYQkhhDMqUrKxaNEixo8fz8KFC63JRqVKlZg/fz7PP/88CxYsKJYg83Px4kV+++03kpKSinSddzq+wyMVHuGdju8U+lxry4ZMey0f9Enmhbp+/Ti7rtVoGLEW1NKNJoQQtypSsnHhwgXuuOOOXF+rW7cuFy9etPtakZGRhIWFERgYyKRJk+zqgvnoo4+44447GDt2LDVq1GDv3r123684WZYqrymrh5Z9N87C4h7wzyZzWeUGvd6HPp+Au4djYxNCCCdVpGTjrrvuYvv27TnGKRgMBr755hvuuusuu66j1+vp06cPrVu3JiIigqioKJYsWZLvOadOneKDDz4gKiqKo0ePMnHiRN54443bfJKikWmv5UPF5JO4f90D4qLMFVp/GL4G7n5KBoIKIUQ+ijT1dcaMGdx///3ExcWhUqlYu3YtO3fuZN26dfz7779s2bLFruts3ryZxMREZs+ejbe3NzNnzmTcuHE8+uijeZ6TmZnJl19+SbVq1QBo0aIF33//fVEe57ZZFvSSZKPsUv23mw6n30OlGM0VFevD0JVQqYFjAxNCCBdQpGTjvvvuY9u2bbz66quoVCo+//xzVCoVbdu2ZevWrXTp0sWu6xw5coR27drh7W3+Zd28eXOioqLyPadp06Y0bdoUgOTkZObNm8eAAQPyPP7WKbk6nQ4wt8IYDAae3P4ksbpY1m1fx5fdv7QrboDENANJ6ZkAVK2gwWAovQGClnuV5j2LgyvGbah8F5naaviln8dUpwvG/ovAKwCc+Blc8n2WmEuFxFx6XDFue2Iu7POolGKan5qamkpCQgKBgYHWpMFeEyZMID09nc8++8xaFxwczKlTpwgMDMz33E2bNjF48GBq167N33//jUaT+wC9adOmMX369Bz1y5cvx9vbm/cT30en6PBT+THZf7Ldsccmw4fH3PHVKMxoY7T7POF6vPVXqXVtDyerDUBRqR0djhBCOExqairDhg0jMTERPz+/Ao8vtmSjKF5++WUMBgOzZ8+21oWGhnLgwAFCQkLyPTczM5MDBw7w3HPP0aVLFz7++ONcj8utZSM0NJT4+Hj8/Pzov6E/l5MuU9W3Kuv6rLM79s2Rl3l+1VFahvqzeszddp9XHAwGA9u3b6d79+55JlnOyCXivv6veZdWv+qAi8R8C4m5dEjMpcMVYwbXjNuemHU6HZUqVbI72ShSN4qbm1uBi1gZjQX/tR8UFERkZKRNXVJSEh4eBY/ud3d355577mHu3Ln06dMnz2RDq9Wi1Wpz1Gs0GjQaDev6rGPTpk307t27UB+Ii7oMAGpW9HHYB8nyDK7GaeP+dzd8/wgE1oJHt4BHdkud08acD4m5dEjMpcMVYwbXjDu/mAv7LEVKNr766iubZEOn03H8+HGWL19OrVq1mDBhgl3XCQsLY9GiRdZyTEwMer2eoKCgPM9Zvnw5ly5dst7D3d0dtbr0m7YtW8vLnihlxMEvYfPLoBjh0g3Y8y70eNvRUQkhhEsrUrLxyCOP5Fr/9ttv079/f65du2bXdTp16kRiYiJLly5l1KhRzJo1i/DwcNRqNTqdDi8vrxxZVOPGjXnqqaeoW7cuLVu25M033+R///tfUR7ntsQmmNfYkAW9XJzRAJsnQ8RX2XUN74dOkxwXkxBClBElssV8cHAwCxcuZO7cuXYd7+7uzsKFCxk7dixVqlRhzZo1zJo1CzDPTPn5559znNOqVSu++OILXnrpJVq2bEmtWrVsxnyUFkvLRg1Z0Mt1pV6Hb/vbJhodX4Ahy83bxQshhCiSEtti/vr16yQkJNh9fL9+/YiOjiYiIoIOHToQHBwMmLtU8jJixAhGjBhR1FAB+PjQx0SlRvHPoX+Y3Na+2ShGk8KFBMvqodKy4ZLiTsKKwZAQYy6rPaDvPGgxxKFhCSFEWVKkZOOtt97Ktf7y5cusWrWKTp06Fep6ISEhBc4+KSlbY7YSlxFHbEys3cnGFV06GUYT7m4qqvlLy4bLObUN1jwGGVn76vhUhiHfQWhbx8YlhBBlTJGSja+//jrXeh8fHwYMGMA77xR+UzNXYulCCQn0Qu0my1W7nLO/ZicaVe+EISsgINSxMQkhRBlUpGTjzJkzxRWHS5LdXl1ctzfN3SjuWug/Hzx8HB2REEKUSSU2ZqM8sM5EkcGhrsFkBLebpke7qeF/S8DdE9xKZKy0EEIIijgbJTY2tlCDQMua87Lbq+u4fAw+uxvO/2Vb7+EtiYYQQpSwIv2UbdmyJS+//HJxxeJypBvFRZzYAIt7wrVoWDkUEi84OiIhhChXitSN0rFjR44fP15csbgcy9byMu3VSSkK/PIh7JqRXedfw7YrRQghRIkrUsvG22+/zZEjR1iyZEkxheM60g1GrujMG7tJN4oTMqTBD4/bJhp3DoJHNoFvVcfFJYQQ5VCRWjZu3LjB22+/zbPPPsumTZt4/PHH8fKyHSxZ2LU2XMX5rMGhFbTuBHq71uY6ZZ7ukrm75OKhrAoVdHsD7nkRCtg4UAghRPErUrLRpUsXVCoViqKwZs0a1qxZY/O6SqWya9dXV2RdpjzQq8Cdb0UpuvAXrBwOSZfMZY0PPPwlNH7AsXEJIUQ5Juts3CbLeA3pQnEiaTdgaX/QJ5rL/jVh6Aqo2syhYQkhRHlXpGSjVq1axRWHy5Gt5Z2QVwDc/y78+AzUbA+Dl4FPJUdHJYQQ5Z4s6nWbsqe9yoJeTqXlcPNKoI16g7uHo6MRQghBIWejqNVqli9fXlKxuJTY61m7vVaUlg2HuXEO/lyUs/6OfpJoCCGEEylUy4aiKCUVh0tRFMXajSILejnIuQPmgaCp8eAZAHcOdHREQggh8lDobpQLFy4QFRVl9/FNmzYt7C2cXmKagSR9JgA1JNkofYe+gw0vgMlgLv8yG+7oL4t1CSGEkyp0svHKK6/wyiuvFHicoihlduqrpQsl2FeLl4f8gis1JiNsfwN+/zS7rk5n82ZqkmgIIYTTKnSyMWbMGNq1a1cSsTjU/G7z2b13N107dy3wWBkc6gDpibDmcTi9Pbsu7Enz7BO1LKomhBDOrNDJxr333suwYcNKIhaHqu1XmyrqKtT2q13gsbInSim79i+sGArx/5jLKjX0fh/CnnBsXEIIIewiU19vwznZWr70nPsDVgyGtARz2SsQBi2FOmVzGXwhhCiLCpVs7N69myZNmpRULC4jVpKN0uNXzdySAVCpEQxbCUF1HRuTEEKIQinUOhudO3emcuXKJRWLQ22O2UyEPoLNMZsLPFamvZaigJrmlUAbPwhPbJdEQwghXJB0o2T55NAnxKXF8duh3+jboG+exxlNChdumGejhAbJANFil3od1B6grZBdV6u9+UsIIYRLKlTLhoArunQMRgV3NxXV/CXZKFZXT8GibrB+LJhMjo5GCCFEMZGWjSwvtHyBPw/9SVjLsHyPswwODQn0Qu0mW8sXm+gdsOYx846t1/+D/R/DvRMcHZUQQohiIMlGll61e6FEKfSq3Svf42S312KmKHDgC9g2FZSs1owqd8KdgxwblxBCiGLjNN0okZGRhIWFERgYyKRJk+zah2XhwoVUq1YNjUZDjx49uHTpUonHaUk2ZJnyYmDMgJ+eg61TshONxg/CY1sgINSxsQkhhCg2TpFs6PV6+vTpQ+vWrYmIiCAqKoolS5bke86vv/7K66+/zrfffsuZM2dIT09n4sSJJR5rbELWbq/SslEkHgYd6u8GwKFvsys7TYZB39oODhVCCOHynCLZ2Lx5M4mJicyePZt69eoxc+ZMFi9enO85//zzD1988QXh4eHUqFGDRx99lIiIiNuOIUYXwxXjFWJ0Mfkel72glwwOvW1xUXQ+NQ232APmsrsnPLwY7psKbk7xkRRCCFGMnGLMxpEjR2jXrh3e3ubWgubNmxe4s+zjjz9uU/7nn3+oX7/+bccwdudY4tLiWLVzFTsH7czzOFljo+jUv32CJiPeXKhQFYYuh5DWjg1KCCFEiXGKZEOn01GnTh1rWaVSoVarSUhIIDAwsMDzr127xoIFC1i2bFmex+j1evR6vc09AQwGAwaDAQXzGBEFBYPBkOs10g1G4pLM16jmp8nzuNJiub+j4ygsQ/gsDP8epEJAEKb/LTOvEurkz+CK77XEXDok5tLhijGDa8ZtT8yFfR6VYs9IzBL28ssvYzAYmD17trUuNDSUAwcOEBISUuD5gwcPJjk5mZ9//jnPY6ZNm8b06dNz1C9fvhxvb2/eT3wfnaLDT+XHZP/JuV7jciq8e8QdrVrhvTAjKpn5ets8DQlkqH0wuXk4OhQhhBCFlJqayrBhw0hMTMTPz6/A452iZSMoKIjIyEibuqSkJDw8Cv5F9NVXX7Fv3z4OHz6c73FTpkzhpZdespZ1Oh2hoaH06NEDPz8/Pln3CaSB1lNL7969c73GnlNX4cgh6gT78cADjl/R0mAwsH37drp3745G46TbrCddRr15Asae74F/DcBF4r6FxFw6JObSITGXHleM256YLb0D9nKKZCMsLIxFixZZyzExMej1eoKCgvI97+DBg4wfP54NGzZQpUqVfI/VarVotdoc9RqNBo1GgwpzM4UKVZ5v7sXEDMA8E8WZPjSWZ3A6Fw/BimGQdBG3pIvw2Fbw8LG+7LRx50NiLh0Sc+mQmEuPK8adX8yFfRanGPrfqVMnEhMTWbp0KQCzZs0iPDwctVqNTqfLtW/oypUr9OnTh5dffpnWrVuTnJxMcnJyicYpC3oVQuRa+KoXJF00l9NuQNJlh4YkhBDCMZwi2XB3d2fhwoWMHTuWKlWqsGbNGmbNmgWYZ6bkNhZjxYoVxMXF8dprr+Hr62v9KkmxCbK1fIFMJtg9E9Y8CpnmNUkIbQdP7oaK9RwbmxBCCIdwim4UgH79+hEdHU1ERAQdOnQgODgYMHep5Gb8+PGMHz++9AIEzl2X3V7zlZEC68bCiZ+y6+4aDg9+DO45u7CEEEKUD06TbACEhITYNfvEERRF4bx0o+TtRiysHAqXj2VVqKDH29D+WWTajhBClG9OlWw4sxupBpL0mYDsi5JD6nX48j5IiTOXPXxh4FfQsIdj4xJCODVFUcjMzMRoNBZ4rMFgwN3dnfT0dLuOdxauGHdmZiZubm527VFmL0k27GQZr1HZV4unRu3gaJyMdxC0HA6/fgyBtWHoKqjc2NFRCSGcWEZGBpcuXSI1NdWu4xVFoWrVqsTGxqJyodZSV4xbURSqVavGhQsXCAkJsWsZioJIsmGn7D1RpFUjV/e9Yd7jpO0Yc/IhhBB5MJlMnDlzBrVaTfXq1fHw8CjwF7HJZCI5OZkKFSrg5kJ7KLli3EajkcTERFJSUjhz5gwNGjQocuySbNgp1jI4NFAGh5Kug4t/Q90u2XVubtDlFYeFJIRwHRkZGZhMJkJDQ617YhXEZDKRkZGBp6eny/zSBteM22QyYTAY8PPzIzY21hp/UbjGkzsBSzdKuR8cev0MLO4B3w2C2D8dHY0QwoW5yi/f8qo4vz/ynbaTZUGvGuU52Yj51TwQ9OoJMOrhx3HmdTWEEEKIfEiyYadyv3poxNew9CFIu24uV2wAQ1eYu0+EEKIcWLJkCSqVCpVKhaenJ61bt2bbtm0A/Prrr9x55514enrStWtXzp49az3v/PnzdO/eHR8fHzp37sy///7rqEdwGPlNYQejSeHCDcuCXuUs2TBmwqbJsHE8mMxTf6nXDZ7YISuCCiHKnWbNmpGQkMDp06d58MEHGTBgAOfOnaNv377079+fqKgogoKCGD58OGCe2TFixAhCQ0M5duwYHTt2ZODAgcU6rdQVSLKRpWftnrT2aE3P2j1zvHZZl47BqKBRq6jqV7RBMi4lLQG+GwgHF2TXtRsHw1aDV4DDwhJCCEdRq9UEBARQo0YNpk2bRkZGBt988w1+fn5Mnz6dunXr8vHHH7N//37Onj3Lnj17iImJ4fPPP6du3bq88cYbREVFERUV5ehHKVUyGyXLiy1fZNOlTfRumXN7+XPXzF0oIQFeqN1cY550kcWfhhWD4dppc9lNAw/OhlajHBuXEKJMUhSFNEPei16ZTCbSMoy4Z2QW+8BSL436ttbAWLt2LQD//fcfzZs3t16jZs2a+Pr6EhUVRUREBHfddZd1Noenpyfjx48vd4NjJdmwQ7ncgC3tOtw4Z/63d0UYvAxqdXBsTEKIMivNYKTpG1sdcu+ot3ri7WHfr8Njx44REBBARkYGXl5eLFiwgN9++w1/f3+b4/z9/UlISODChQvWvb4s3nvvvWKL3VWUr9TqNp0vjwt6hbaFvvOgSjPzjq2SaAghBI0aNeLw4cMMGzaMtm3b8uijj+Z6nGVMhsFgQK2WVaelZcMO1tVDy/KeKJkZ4OZuO7ukxRC4YwC4F32pWiGEyI+XRk3UWznHzFmYTCaSdEn4+vmWSDeKvTw8PKhduzbjx4+nRYsWxMTEULFiRSIjI22OS0xMJCgoiICAAC5cuGDzWvXq1Vm8eDG9evUqlvhdgSQbWQZsHMAl3SUWbVzEhv4bbF6LTTDPRCmz015TrsHqkRB6N4S/afuaJBpCiFKgUqny7cowmUxkeqjx9nB3ivEOzZo1o0OHDixatIjmzZvz3XffoSgKKpWKM2fOkJycTLNmzbh69SorVqzAZDLh5uZGSkoKcXFx1KxZ09GPUKoc/x1zEqmGVPToSTXk3BQoe1+UMrhU+ZUo+LIrnN0Pv86Go6sdHZEQQriEp59+mq+++ooHH3yQtLQ0pk6dyr///sv48ePp3LkzNWrU4KGHHkKlUjFx4kRiYmKYNGkSDRo0oGnTpo4Ov1RJspGlpl9NKrtVpqafbbaZbjByNUkPlMFulH82w+LucCNr8ZkKVSBI1s4QQgh7DBw4kMzMTHbt2sVPP/3Ehg0baNq0KTqdjm+//RaAChUqsGbNGv7880+aNm1KVFQUGzZscJkdYIuLdKNkWdhtIZs2baJ3N9upr+ezZqL4at0J8NY4IrTipyiw/xPYMQ3IWlim2l0wZDn4hzgwMCGEcF6PPPIIjzzyiLXs4eFBXFyctXzs2LFcz2vSpAm//PKLU3T/OIokGwU4d9OeKGUiEzWkw4YX4OjK7Lo7+sNDn4NHGWu5EUII4RQk2SiAZWv5mmVhvEbSFVg1HM7ftFtr16nQaRKUhURKCCGEU5JkowBlatrrhuezEw13L+g/H+7o59CQhBBClH3ltwPpFlP3T2VJ8hKm7p9qU2/d7bViGUg2en8IPsHgFwKPb5VEQwghRKmQlo0sf8X9RVxmHLo4nU19mWrZCAiF4WvAtxr4VnF0NEIIIcoJadnIh6IonE+wbC3vYmM2MlLNs030ybb11e+SREMIIUSpkpaNfNxINZCszwSghiu1bCRegJVD4dIRiI+GQd/aLkMuhBBClCL5DZQPSxdKZV8tnoVYO9+hzkeYVwS9dMRc/m8PxJ9yaEhCCFGezJgxg++++87RYdjFZDJZN40rSZJs5MOytbzL7IlydDV83RuSr5jLAbXg8e1QubFj4xJCiDLi/PnzaDQa2rRpQ3BwME888YTNRmsGg4F58+ZRq1atHOcuWbKEVq1aFep+S5YsQafTER8fzyuvvMKZM2c4d+4c58+fp02bNnz11VecP3+ec+fOcfXqVWuM3bp14+TJkyQmJrJnzx6br0uXLlmvP2DAABYuXHib74b9nCbZiIyMJCwsjMDAQCZNmmR3pnX69GmCgoJKJKZzrrK1vGIyj89Y+yQYzUurU6ujeWv4KuVr/X0hhChJHh4eVKxYkYiICFq2bEmPHj1o2LAhp06d4sEHH6R69epcv36dsWPH0qxZMxo2bMjRo0cB8PLywtfX13qtZcuW4eHhQaVKlQgICCA4ONjmXoqiYDKZ6NixI127dqV69er88ccfLFq0iEWLFhEfH8+uXbus5V9//RUw7yp7zz33cM899/D7778zfPhwli1bxrJlyxgzZgzbtm3jyJEjnD9/Hq1Wi1arLfH3zSmSDb1eT58+fWjdujURERFERUWxZMmSAs87c+YMDzzwAAkJCSUSl2VBL2dONtyNaai/HwW/fpxd2WoUjFwPPhUdFpcQQpRFliXHMzIyiIiIoFevXnTs2JENGzbw/fffU716ddauXUtkZCSRkZEcP36cO+64A4PBgFqtRqVSoSgKGRkZeHp6Eh4eTnx8PDt27MDT09PmXiqVilq1ahEfH4+fnx/PP/88165dY/Xq1axfv574+Hh+//131q9fz4oVK/D29rbGOH36dI4cOULVqlVp0qQJM2bMYPr06XTo0AG1Ws2HH37Izp07S21lbKdINjZv3kxiYiKzZ8+mXr16zJw5k8WLFxd43gMPPMATTzxRYnFZ9kUJDXTSmSip17jn1AzcoreYyyo3uP896DNXtoYXQogS9Ouvv3LnnXfi6+vL4MGDcXd3Z8mSJVy7dg2j0cj69etZv349kZGRbNiwgerVq/PEE09w4MABatasyfDhw1Gr1Tb7pajVtmMDP//8cwYNGsSPP/7IiRMniI+PZ9y4cZw8eZLDhw/Tpk0bPvvsMw4fPkx0dDQ9e/YE4ODBg+zfv5+QkOy9rjZs2MBTTz1lc69b71eSnGI2ypEjR2jXrp01K2vevDlRUVEFnrdx40bc3NyYPHlygcfq9Xr0er21rNOZ19MwGAwYDAaUrA3JFBQMBgMAZ6+lAFDNz8Na50wM7hVI1VbGPz0WReuHccBilLpdITPT0aHly/JeOuN7mheJuXRIzKXD0TEbDAZrF4HJZLLrHEvXuuU8R7Hce+PGjdxzzz1kZGQwcuRIUlJSrDu+/vzzz3h7e/PXX3/RvHlzZs6cyciRIxk4cCAJCQns2rULgLVr1+Lm5mbzPtz8bG3btmXbtm20bNmSO++8k6+//prPP/8cDw8PVCoV586d48knn8THx8faWhIREcH58+d5/PHHmT17Ni1atADM3T/+/v7W9+/W/95835vfa0VRrK0yNyvsZ8cpkg2dTkedOnWsZZVKhVqtJiEhgcDAwDzPq1u3LjExMXbd491332X69Ok56rdt24a3tzf6dHMiok/Xs2nTJkwKnE9QAypOHz7AtROFeqRSo671FC3PfcnJagNJPpkGJzc5OiS7bd++3dEhFJrEXDok5tLhqJjd3d2pWrUqycnJZGRk2Lym/ftLtH8vynGOCvC7qWys3IyUvrYt4D4/PY46LrLA++tbPYG+1ZO3EzpJSUkoikKvXr146qmnaNiwIZMnT6ZDhw78+eefdOjQgU6dOhEYGEhiYqL1F/eVK1fYuXMnjRo1YtGiRQwaNAidTodarUan05GSkoLJZLL+IQxQv359AC5dusT58+fJyMjgyy+/tCYbN7MkG4qicN9997Fs2TL++ecfUlJSyMzMJC0tDXd3dwwGA2lpaTb/TU9Pt7mvRUpKCmlpaezbt4/MW/6ITU1NLdT75hTJhru7e44BKp6enqSmpuabbBTGlClTeOmll6xlnU5HaGgoPXr0wM/Pj0/WfQJpoPXU0rt3by7cSMN04Bc0ahVDHuqF2s0JNiozZcKNcxBUFzBnltu3bydwzE900mgcHJz9LHF3794djYvELTGXDom5dDg65vT0dGJjY6lQoULOcQoYUCVfLvAaKv9Q/Pz8bOv0iXad64kB7S3n2isjIwOVSkW3bt3o2rUrV65c4eOPP2bLli1Ur14dNzc3kpOTUavV6PV6/P39AVi/fr11vMasWbPw9PTEYDAQGBiIn58fPj4+uLm55XimjIwMhgwZQnx8PB4eHiQlJTFixAibP9AB/vnnH44dO2adMNGrVy+aN2/OlStXcHd3JyUlhapVq3L58mW0Wi0ajQYvLy80Gg2enp4291UUhaSkJHx8fPDy8qJTp045vk+5JSf5cYpkIygoiMhI22w0KSkJD4/iG3eQ14hbjUaDRqNBhTmZUKFCo9FwKeuNrBHojafWCcY/pN2ANY/B5aPw5C4IqGl9yfIMrsYV45aYS4fEXDocFbPRaESlUuHm5mYzZgEATz/wrZ7jHAVQFBMqlRsqQOVTCdWt5/pUyvXcW6k8/XKeaydLvG5ubjRp0oRdu3YxatQom2dZsGAB7u7uXL58mYcffpi0tDRmzZrFyJEjiYyM5N133+XChQtcuHCBatWq2Zx78/tx9epVhg4dSkBAABMmTMBkMqHVaqlbty7vvvuuTVwjR47E09PTen5iYiLNmjXj008/BeDff/+lcePGXLlyxaaVIrfvg6VLRaVSoVKpcv2cFPZz4xTJRlhYGIsWZTebxcTEoNfrS2xKqz0sG7DVcIbBodf+heWD4Vq0ubx6FDyxy7ExCSFESejwrPnrFkpWF4OfXz6JwrCVJRxctrlz5/Lyyy8ze/Zsm3pFUdiyZQtVq1blpZdewmg08umnnxISEkKXLl2IjIyke/fuAAwePJi+ffvmeY+ffvqJLl268Oqrr/Lyyy8THByMm5sbRqOR5GTbrShuXS7i66+/plWrVgwaNIgePXrQoUMHBgwYwNChQ/H392f37t05urBKklMkG506dSIxMZGlS5cyatQoZs2aRXh4uLUvy9LUU5osC3o5fNrrv7vh+9GQnmguewVBjxnm5ceNRsfGJoQQ5Yzll/rAgQO588476dq1KytXrrTWW8Yy/P3338yZM4e5c+fSs2dPhg0bxokT2YP/kpKS2LFjR45kBSA+Pp5KlSrx+OOPW+uOHz/O/fffj8Fg4OzZs8yYMcPmnJSUFOu/09PTmTNnDl9//TVarZY///yTjIwMtm3bxieffMKPP/7IBx98gLe3Nzt27Ci+NycfTpFsuLu7s3DhQoYNG8akSZMwGo3s3bsXMM9MmTNnDv369SvVmKxbyzsq2VAU+HMRbH4ZlKykIriJOXMPrO2YmIQQopyzzMKoXr061atXJykpiSVLlrB//35CQ0P54osvAGjRogWXL1+2juGoV68ex48ft3ZhvPbaa3Tr1s06PVWlUllbGpo0acL+/ftp2LAhycnJrF+/nr/++osOHTqwc+dOwsLC2LNnjzUmk8lEpUqVrH+UT5s2jcqVK9O1a1eSkpKYPHkyr732GiNGjCAsLIwPP/zQOoszPT29VN43p0g2APr160d0dDQRERF06NDBupJaQbNNateuXSLrujt0a3mjATZPhoivsusa3g8DvjT3ZwohhHCIW2dlfPHFF3Tq1InVq1ezZcsWfvzxR9577z3OnTtHYmIiGRkZ7N69m5o1a5KWlkZ6ejqnT59m27Zt1imwALVq1UKlUtGoUSOqV69OgwYNAHjhhRc4duwYq1evxsvLK8eU0/T0dOrWrUuDBg2oWrUqAE2bNqVt27bW86tWrcoTTzyBWq3myy+/5NtvvwUgPDycX3/9lVdffbXE3i8Lp0k2AEJCQmwWIXGk2Kyt5Uu9ZSP1unlMRswv2XUdx0O3N8DNRTaDE0KIMqpmzZpcvpw94+XmdZ4GDRrEoEGDbI6/eTrr6NGjGT16NGDeouPmtSsqVapks8eKhWWwqUX//v3p37+/tezp6cl///1nM1tk1KhR1n/PmzePjIwM6706duxIx44dAfOiYcHBwcU26zM/TpVsONIPD/7A1m1b6dmjJ2kZRq4mmdfdCA0q5QGiMb9kJxpqD+g7D1oMKd0YhBBClCh7V++8OdHIy63TUm/m4+ODj49Prq81bNjQrhiKg1MsV+4MfDQ+eKo88dH4WJcp9/V0x9+rlKeFNX0I7p0APpXhkZ8l0RBCCOHypGUjFzeP1yitTWpsdH0N2j4FvlVK/95CCCFEMZOWjVzEWreWL+EulEw9rH8GDi+3rXdzk0RDCCFEmSEtG1mWnVjGobRDXD9xnfMJdwMlPDg0OQ5WjYDYP+DY91CxPoS2Lbn7CSGEEA4iyUaWZSeXEaeP4/jJ49RNvxMowQW9Lh+DFUMhMdZcVqkh+UrJ3EsIIYRwMOlGyUV2N0oJJBsnNsDiHtmJhm91eGwzNOlT/PcSQghRolJSUvjqq68KPhDzfiXTpk2z2c59w4YNzJ071+77paen25wP5um1t7P0uGWL+dIgyUaWGR1mMNpnNG+3fzs72SjOBb0UBfZ+YO46MWRtzRvSGsbshuoti+8+QgghSk1SUhITJ05kxYoVBR7r6+vL/v37WbBgAWD+Zf/GG29Qq1atHMf+9ttv1KxZk2bNmnHXXXdRo0YN1q1bR7NmzWjRogVVq1YlODiYu+66i+bNm/Pkk08CcP78ebp168bJkydJTExkz549Nl+XLl2y3mPAgAEsXLiwmN6J/Ek3SpY2VdoQp4mjnm8LUjL2AMW4CZshDX4cB5E/ZNfdOQj6zgWNE2z0JoQQokBGo5EqVXIO3k9JSeGRRx7hueees6lv06YNmzZtYtu2bbz66qtotVqSkpKYN28en332GRkZGZw5c4apU6fy6quv4u3tzZ9//glAhw4dOHfuHACrVq3inXfeITw8nNOnTwPmxcR8fHx48803be5ZvXp17rnnHu655x6WLVvG448/Tq9evQDYt28fU6dO5a677qJixYp57oZeEiTZuMX5rJVDq/hp8dQU04qd3z8KpzZnl7u9Afe8BI6YViuEEOK2qNVqrl+/zm+//Ua7du3yPXbJkiUsW7YMgG7dunHs2DE8PT2tyykMGTKEIUOGWPf9UhQlxz4l//zzD1u2bOGzzz7jhx9+wNfX1/raxYsXrUnEzdzc3Jg+fTpjxozh6tWrNGnShBkzZmA0Gpk6dSpqtZoPP/yQ8PDwUl3aQbpRbmFZprxYu1A6TQS1FjQ+MGS5edEuSTSEEMKlGI1G+vbtS1BQEImJiaSkpJCenm7zpdPp0Ov11KxZk1atWgHmJMWyNXxeDAZDjlYGT09PPvvsMxo1asSdd5onLsybN49mzZrx448/MnXqVJo1a0azZs04dOgQAAcPHmT//v02W39s2LCBp556ylpWq9V2r2BaXKRlI0vElQiiDdFcv2QEtMU77bVGG3h4EQTVharNiu+6QgghSo1arWb9+vUAVKlShcTERJvlxBVFISMjgzlz5jBu3Djuu+8+62DOOXPmsHr1auvOrKdPn+bQoUPMmjULAL1ezzfffEPz5s0ByMjIICQkhF27drFo0SLrPRITExk4cCCvvPIK//zzD3feeScdOnSw3ufixYs8+uijzJkzhxYtWgDmpCUgIKBE35uCSLKR5bXfXiMuLQ7P1EDgZWrcbrJhMsGx1XDn/2w3Tmvat1jiFEII4RiKomAymVCr1Vy5UvByBZmZmbi5uZGenv7/9u48LKqy/QP4dwBZhh1kExRQQAXcRXFB3CATMZc0NZe3xMCltABD01AqKVAjzaVwQUttMZfULPFFMTO3X2EpIeKSqKHgi4CDrHP//qAZGRiROTBH0PtzXXNdnpmzfJ/DgXM75znPQUREBN5++23lZzUvowBVBUZJSQkMDQ2RmJiIVatW4f79+ygpKcGWLVsAAKGhoaioqMDff/+NwYMHIy8vD8DDZ62MGjUKVlZWSE9PV8mt7omxYuJio4YKedVtQIK+2Si9D+wOBTL2A3f+AgKWNnI6xhh7um25sAVb07eq/YzkBIlO/S5Bf+j3IXzsfZTTZ3LOIOrnKADAVM+pmOY1TeNsx44dw7Bhw2BoaAhdXV3lbahSqRRlZWUoKyuDiYkJgKrLIjKZDFlZWRg2bBgMDAxq9ZFYsmQJlixZopyWy+UICgpCbGwsZs+ejdmzZ2P9+vU4f/48OnfujJMnTyrnVTxaXl2/iwEDBqBdu3bKgigvLw/W1tbIycmpddusWLjYqKHy32KjtaZ3oty7DuyYBNz+s2r6xCqg22SgpXsjJ2SMsaeXrFyGO8V3GryessqyWtOK9crKZYLW6e/vjwcPHiinZ86ciZKSEmzevBlJSUnYsGEDjh8/rrKMXC7HsWPHYGZmplJwdO/eHStXrsTAgQMBVH37UFFR8ci+FMOHD8ewYcOwbds2AMD169fh6uqqsh2FgoICeHp64tNPPwVQdcmmQ4cOyMnJQVlZmfIbGjFxsVGDXFFsaPLNxvVTwNcvA7LcqmkDc2DcJi40GGNMQ8YtjGErtVX7mSbfbOjr6teaVqzXuIX6R65r6uzZsxg/fvxj54uLi8O+fftgYGAAHR0dlJaWIiMjAyNHjkTbtm0BPByYa8uWLejdu3etdTg5OQGo6tsBVHUEbdeunfLz6neybN68Gd27d8f48eMRGBiIvn37YsyYMZg4cSLMzc1x5MgRQYOANQQXGzUQAH1dHdiZGdZvgd+3AfvnAYoq2qotMPFrwMZDWxEZY+ypNc1rmtpLHHK5HIWFhTAzM4OOjuY3UvrY++C/4/7bGBEBAL/++ivOnTuHr776Su3n2dnZKC4uhru7OxYtWoS4uDhl7jfffBO9e/fGH3/8gaioqHoVLApTpkxBSUkJgoKC8Nlnn2Hfvn34+uuvYWtbVUiVlJQgISEBmzdvhoGBAc6cOYOysjIcOnQIn3zyCfbu3Yv4+HhIpVIcPny44TuinvjWVzUcLY2g+7jqWV4J/PQOsHfWw0LD1R8I+S8XGowx9hTbv38/goODER0drfx2QSKRoKioCEQEIsLWrVvRu3dv5TcRQNWdIlOnTsVvv/2GdevW4cCBA/joo48wefJkXLhwodZ28vLycOvWLZU7XqysrBAREQFfX1906tQJ7733HuLi4pSXX5YsWQJbW1sMGjQIRUVFmD9/PhYtWoTo6GhcvnwZy5cvR6tWrWBhYVFrXA9t4mJDjcdeQikpBHZMAH799OF7vV4DJn8HSK20G44xxtgTkZmZiZ49e2L8+PGIjo7GO++8o/ysU6dOyM7OVo5h8cEHH2DlypUwMDDAihUrMHjwYPTs2RNeXl44fPgwjIyM4ODggF9//RUeHh7o06cP3N3dERUVpVznuHHj8O2332LcuHEAgC+//BLe3t7w9PTEl19+iVatWuHEiRO4f/++ch5PT0/lOubOnQt7e3uEhITA2NgYiYmJuHLlCgBg6NCh+PHHH+Hp6SnKvuPLKGo8tnOoji5QlPPvv/WA5+MAn+naD8YYY+yJ8fDwQHh4OAYMGKAyaBZQ1eHzf//7X61l5HI5PD094e3tjeDgYEilqv+Z1dfXx7vvvou33noLBw4cUBkO/ciRIyrzjhw5El26dFEO8AUAenp6SEpKws2bNwEAU6dOVX62evVqlJWVKb/16NevH/r16wcAWLt2LWxsbGBpaSlkV2iMiw01Hnvbq74xMHEH8OWLwPA4wHWAOMEYY4w9URMnTtR4meeff/6xfU1MTEzw0ksv1bkeMzMzlUJDQSKRKDuQVmdsbAxjY/WdYT08xL3cz8WGGmovo5QWAQYPx6WHuRMw8wQgoKMSY4wx9izhM6UaKs9FqSwHDkQAGwOrCo7quNBgjDHGHovPlv+iav9WXkYp/h/w5VjgTCJwJx3Y9RpApHZ5xhhjmiH+e9qkNebPhy+j/EsxcqiORAJzaQsg92LVHSf/q+q5C119oMMIflorY4w1kOJhZMXFxTAy0nC0Ziaa4uJiAA9/Xg3RZIqN8+fP45VXXkFWVhZCQkIQFxendsz36lJTUxEWFobc3FwsXLgQb731luDtK4oNXR0JcOkwsPMVoLSw6kNjG+ClL4E2voLXzxhjrIquri4sLCxw507V8OFSqfSxf+8VI2yWlJQIGtTrSWmOuSsrK1FUVISioiJYWlo2yuPom0SxUVpaiuDgYDz33HP46quv8MYbbyApKQmvvPLKI5fJzc3FyJEjER4ejokTJ2LChAno1q0bBg0aJCiDotiQogTYPg6gf8eNt+sETNwOWLQRtF7GGGO12dvbA4Cy4HgcIsKDBw9gZGT02MKkKWmOuYkIMpkMDg4Oyp9TQzWJYuPgwYMoKCjAypUrIZVKsWzZMsyePbvOYmPbtm1wcHDA4sWLIZFI8O6772Ljxo0NKDaqigsj+f2HhUaHEcDozwADE0HrZIwxpp5EIoGDgwNsbW3r9ejz8vJyHDt2DAMGDGiUr/XF0hxzV1RUICUlBV27dm20AqlJFBvnzp2Dr6+vcrCTzp07Iz09/bHLDB48WLkjevXqhQULFjxy/tLSUpVhYwsLqy6RlJeXo7y8HLqVD1S6y1b2C4fc/21AogPU4xfhSVD8gtbnF7UpaY65ObM4OLM4mlrm+nxNL5fLlU9FbYyv9cXSHHPL5XIQUZ3Hh6bHjoSaQHfg8PBwlJSUYM2aNcr3bGxskJmZ+cjRzcaOHQtfX19ERkYCAGQyGVq1aoWCggK18y9ZsgRLly6t9f727dshlUrx3pVf4Idj6Ix/0MliIm5a9WmEljHGGGNPn+LiYkyaNAkFBQUwMzN77PxN4psNPT09GBgYqLxnaGiI4uLiRxYbNZdRzP8oCxYsUOlAWlhYiNatWyMwMBBmZmaoPNcFx072ROBAB9i290WXBrZJDOXl5UhOTkZAQECz+XoOaJ65ObM4OLM4OLN4mmPu+mRWXB2oryZRbFhZWeH8+fMq7xUVFUFfX7/OZXJzc+s9v4GBQa2CBqi6padFixYI7uII3ZsGsG3v22wOCAVFG5qb5pibM4uDM4uDM4unOeauK7OmbWkSxYaPjw82bNignL527RpKS0thZfXoJ6j6+Phgx44dyum0tLRaD8api+LqUfW+G8XFxSgsLGw2B0RzzAw0z9ycWRycWRycWTzNMXd9MivOnfXuiUFNQHl5OdnY2NCWLVuIiCg0NJRGjBhBREQFBQVUVlZWa5nc3FwyNDSklJQUKi8vp6CgIJozZ069t5mdnU2oGjiUX/ziF7/4xS9+CXhlZ2fX65zbJDqIAsCePXswadIkmJqaorKyEqmpqfDy8oKLiwsSEhIwatSoWsusXbsW8+bNg7m5OYyNjXHq1CmVx/PWRS6X49atWzA1NYVEIlH24cjOzq5XZ5emoDlmBppnbs4sDs4sDs4snuaYuz6ZiQhFRUVo1apVvQYraxKXUQBg1KhRuHTpEs6ePYu+ffvCxsYGQNUllUeZNWsWAgMD8ddff8Hf31+jH6SOjo7aR/KamZk1mwNCoTlmBppnbs4sDs4sDs4snuaY+3GZzc3N672uJlNsAICjo6NG/S4AwM3NDW5ublpKxBhjjLGGah4DtTPGGGOs2eJi418GBgaIjo5We3tsU9UcMwPNMzdnFgdnFgdnFk9zzK2NzE2mgyhjjDHGnk78zQZjjDHGtIqLDcYYY4xpFRcbjDHGGNMqLjYYa4Bbt27hxIkTKCoqetJRGGOsyXpmio3z58/Dx8cHlpaWiIyMrNd47qmpqejYsSNatmyJlStXipBSlZDMAJCVlVXnc2W0TUjuzz//HA4ODmjRogUCAwPxzz//iJD0ISGZV6xYAS8vL4SFhcHJyQmpqakiJH1I6PEBVD37oFOnTjh69Kj2AqohJHNwcDAkEonyNXToUBGSPtSQ/TxhwgS8/vrrWkynnqaZlyxZorKPFS8xjw8h+zk+Ph52dnYwMzPD2LFjcffuXRGSqtI0NxEhLi4O7u7uaNmyJWbPng2ZTCZS2ip3796Fq6trnYNmVtco58J6P0ykGSspKSEXFxcKDQ2lrKwsGj58OG3atKnOZe7cuUNmZma0dOlSyszMpO7du1NKSopIiYVlJiK6cuUKeXh40JP60QrJ/fPPP5OtrS0lJydTdnY2+fn50aRJk0RKLCzzxYsXyc7Ojm7dukVERDExMTRgwAAx4hKR8OND4f333ycAdOTIEe2FrEFoZgcHB/rzzz8pPz+f8vPz6f79+yKkrdKQ/fzjjz+SjY0N5efnazdkDUIyP3jwQLl/8/Pz6dy5c2RjY0P37t1rsplTU1PJy8uLMjIy6NKlSzR8+HCaNm2aKHkVhOROTEwkR0dHOnXqFGVkZFDPnj1p8uTJIiWueq6Yr68vAaCrV68+dv7GOhc+E8XG7t27ydLSkmQyGRERpaWlUb9+/epc5uOPP6b27duTXC4nIqI9e/bQyy+/rPWsCkIyExF17NiR4uLinlixIST3hg0b6LvvvlNOb9q0iTw8PLSaszohmS9cuEDff/+9cnrv3r3UqVMnreasTujxQUSUmZlJFhYW5OLiImqxISRzdnY22dvbixFPLaH7ubi4mNq2bUsbN27UdsRaGnJsKMyYMYOWLVumjXhqCckcHx9PkZGRyukvvviC+vTpo9WcNQnJ7efnRwkJCcrpAwcOkKmpqVZzVjdkyBBKSEiod7HRWOfCZ+Iyyrlz5+Dr6wupVAoA6Ny5M9LT0x+7zODBgyGRSAAAvXr1wm+//ab1rNW3r2lmANi/fz/GjRun7XiPJCT39OnTMWbMGOX0xYsXRR2CXkhmT09PBAcHAwDu37+P1atXq7RB24QeHwAQGhqKqKgoODs7azNiLUIynz59GpWVlXBycoKxsTEmTJiA/Px8MeICEL6f33vvPTx48AB6enpISUnR6NJLQzXk2ACq+iHt3r1b1Ms/QjJ7e3tj165duHz5Mu7cuYONGzciICBAjLhKQnLn5eWhTZs2ymldXV3o6upqNWd1n3/+OebOnVvv+RvrXPhMFBuFhYVwdXVVTkskEujq6tb5R6vmMmZmZrh586ZWc9a1/fpkBoC2bdtqO1qdhOZWuHv3Lj777DPMmjVLWxFraUjmH374AQ4ODsjJycE777yjzZgqhGbevHkzCgoKEB4eru2ItQjJnJmZiR49euCnn37C2bNnce3aNSxcuFCMuACEZb5+/TpWrlwJNzc3XL9+HZGRkRgzZoxoBUdDfwfXr1+PSZMmwcTERFsRaxGSediwYXB3d4ebmxvs7Owgk8kQFRUlRlwlIbm7du2KPXv2KKc3b96MwMBAbcZUoek5orHOhc9EsaGnp1dr2FVDQ0MUFxfXe5nHzd/YhGRuChqae9asWejbty+CgoK0EU+thmQODAzEwYMHoaenh/nz52srYi1CMufm5mLBggXYuHEj9PTEfwajkMxRUVE4ePAgvLy80LFjR3z00UfYuXOntqMqCcmclJQEOzs7JCcnY9GiRTh69ChSU1ORnJys7bgAGnY8V1ZWIjExEWFhYdqKp5aQzN988w3+/vtvZGRk4O7du/D29sbkyZO1HVWFkNzLli3D6dOn4efnhy5duuDrr7/GnDlztB1VsMY6Fz4TxYaVlRVyc3NV3isqKoK+vn69l3nc/I1NSOamoCG5N23ahGPHjmHTpk3aiqdWQzLr6emhf//+WLVqFTZv3qytiLUIyTxv3jxMnz4dXbt21XI69RrjmLawsEBeXh5KS0sbO55aQjLfuHEDQ4YMUf6BNjU1hbu7O65evarVrAoN2c9HjhxBy5Yt0bFjR23FU0tI5h07dmDmzJlo3749rKyskJCQgF27duHevXtaTvuQkNwuLi5IT0/H559/jjZt2iAgIAB+fn7ajipYY50Ln4liw8fHBydPnlROX7t2DaWlpXXeHlpzmbS0NDg6Omo1Z13br0/mpkBo7tOnT2PevHn46quvYGdnp+2YKoRk3r59O1asWKGc1tPTE/W6q9DMq1evhoWFBSwsLHD8+HGMGDECH374oRiRBWV+8cUXVZY5c+YM7O3tRXuolZDMrVu3xoMHD5TTcrkcN27cEK2PTEP+dnzzzTcYPXq0NuOpJSRzRUUFbt++rZxW3C5fWVmpvaA1CN3XEokEZmZmOHz4sGi/f0I12rlQ4y6lzVB5eTnZ2NjQli1biIgoNDSURowYQUREBQUFVFZWVmuZ3NxcMjQ0pJSUFCovL6egoCCaM2dOk86scPXq1Sd2N4qQ3Dk5OWRra0vvv/8+FRUVKV9NOfP//d//kYmJCe3atYuuXr1KAQEBFBoa2qQzX716VeXVu3dv2rFjh2i3ZgrJvHTpUvL19aWTJ0/Svn37yN7enmJiYkTJKzRzRkYGGRsb086dOyk7O5vmz59P1tbWVFhY2GQzK7Ru3VrUW/wVhGSOjY0lGxsbWrduHSUlJVHXrl1FvxulIfs6LCyMpkyZIkpOdVDjbhRtnwufiWKDqOoWJSMjI7K1tSVra2s6f/48ERE5OzvT7t271S6zZs0aatGiBbVs2ZKcnZ0pJydHxMTCMhM92WKDSPPcH3/8MQGo9WrKmYmqbrVzcXEhCwsLCgkJUd7+Jhahx4eCv7+/qLe+EmmeuaysjF599VUyNTWldu3a0dKlS6m8vLxJZyYi2r9/P3Xt2pUMDQ3Jy8uLjh8/LmJiYZmzsrJIV1dX1EK/Ok0zP3jwgF5//XVq1aoV6evrk7+/P2VlZYmcWti+vnTpEpmZmdH169dFTKqqZrGh7XPhM/WI+Zs3b+Ls2bPo27cvbGxs6rVMVlYW/vrrL/j7+8PMzEzLCWsTkrkpaI65ObM4OLM4OLN4mmtuTTT0XPhMFRuMMcYYE98z0UGUMcYYY08OFxuMMcYY0youNhhjjDGmVVxsMMYYY0yruNhgjLFmpKKi4pnaLns6cLHBGGPNyMsvv4xt27aJus3MzEz4+PigoKBA1O2ypwcXG4wx1kwsX74cZ86cEfUpoQDg5uaG1q1bY8qUKaJulz09uNhgz4xr165BIpE88nX27FmN13n06FFIJBJcu3at8QNroHo7dHR00KpVK7z11lsoKSnR2jYV+/Po0aNNYj0NVX0ftmjRAm5uboiKikJhYeETzaVw/fp1xMTEYO/evcqBo1xcXB55PC9fvlztPC1btsSrr76q8hj0x7VdR0cH27dvR3p6Or777jvxG8+aPfGfM83YEzZ16lQEBATUer9t27ZPIE3j8fHxwRtvvIGSkhKcOXMGq1evRlFRERITE7WyPRsbG3zxxRd1PiE0ISEBXbt2xcCBAxu0HrH4+vpi9uzZkMlkOHHiBOLj43H69GmkpKRovK76tF0TixYtQkhICDp16qTyvuLnXlOPHj2U/3Z1dUVMTAzKyspw4cIFrF+/HtnZ2SqPvX9c201MTLBixQpERERg1KhRoj54kD0FBAypzlizpHhmzOrVqxttnUeOHKn1jIEnAQCNHTtW5b1ly5aRjo7OE33+grOzM0VHRz+x7WsCAL300ksq77355psEgDIyMjReX2O2XSaTkYmJCd2+fbvWNmr+3NXl6NGjh8p727dvJwD0yy+/EJFmbff29qbU1FShTWHPKL6MwthTatCgQZDL5bhw4cKTjtJsDRkyBEDVJYwnKTk5GT169ICtrW2jrG/QoEEAgD/++OOR8zyq7WPGjMHevXsbJQd7dnCxwVgNRIS4uDi0a9cOUqkU3t7e2Llzp6B1rVixAu7u7pBKpfDw8MD69etrzZOSkoI+ffrAyMgIbm5u+PDDD1FZWdnQZkBfXx8A8ODBA+V7P/zwA7p16wZDQ0N06NABX3zxRa3ltm7dCm9vb0ilUjg7OyMmJgak5hFKj+proejHIpFI8Pfff2Pp0qXK6SVLltR7PRUVFbC2tsbixYtV3j948CAkEgl+//135XtpaWkICAiAVCpFmzZtEBkZ2Sj9VW7dugUAKg/X2r9/P3r06AFjY2O4uLggOjoacrlc47Zrkjk9PR2+vr4Nbo+CumOjJnVtB6out6SnpzdaFvZs4D4b7Jkjk8mQl5ennG7RogXMzc2V0ytXrsTbb7+NWbNmoVu3bkhJScHEiRPh5eWlUb+CDRs2ICIiAv/5z3/Qv39/nDx5EjNnzoSzszOef/55AFUnp+eeew6jR4/G9OnTceHCBSxcuBAymQzvvfdeg9qp+EbDw8MDAPD9999j9OjR6NevH5YvX46ffvoJU6dOhUwmQ1hYGADg8OHDmDZtGkaOHIl58+YhMzMTS5cuhY2NDWbOnFmv7Xbs2FFZxLz55pvw8/PDmDFjAACdO3eud349PT2MHDkSu3fvVtkXe/bsQdu2bdGtWzcAQEZGBvz8/NC7d28kJCTgxo0biI+PR05Ojtpiqi5lZWXIy8uDXC7H77//jpiYGLi7u8Pb2xsAcOrUKYwePRqDBg1CQkICrl27htjYWDg5OWHGjBn1brummW/fvg0XF5c6M1fXsmXLOttZ89ioT9sV7O3tkZOTU+f6GavlSV/HYUwsij4bNV81r2dHRERQZGSkcrqyspIsLS3V9vWoq8/GtGnTyMrKSuW98PBw2rdvn3La19eXBg4cSLm5ucrX6NGjycbGRqO2AaDg4GDKzc2l7Oxs2rVrFzk5OdGAAQOIiEgul5Orqyt169aNKioqlMsNHz6czMzMqKioiIiIoqOjCQAVFhYq51m2bBklJSXV2qZifx45cuSRuerTb6Gu9ezfv58A0KVLl5TtsLe3p/nz5yvnmTBhArm7u1NOTo5yH86dO5d0dXWpoKCgzm1Xp+7Y8PT0pPPnzyvnSUpKorFjx1JxcbHyvRdeeEFtv4m62q5p5tDQUFq3bp3abajLrfh5Kubp0qUL5ebm0q1bt+jQoUPk5eVF7dq1o9LS0nq3XeGvv/6iDh06PHpHMqYGFxvsmaE4qc2ZM4eSk5OVr1OnTqmd/88//6R169bR6NGjCYDaE0ddxcann35KAGjhwoV06tQp5R92hfv375OOjo7aP/QAKC8vr95tU7e8t7c3ZWVlERHRxYsXCQCtWrVKZbk9e/YQADp06BARPTy5z5gxg37++WeSyWSP3KYYxUZpaSmZm5tTXFwcERH98ssvBIBOnz6tnMfW1vaR+/Ds2bN1brs6ADRw4EBKTk6mBQsWEAA6evSo2nmzs7Np27ZtFBoaSkZGRuTv769R2zXNvHjxYlqyZInabfj5+akcz8nJySoFpbqCxNnZWWUfatL2I0eOqG0vY3XhyyjsmdO+fXsMHTr0kZ8fOnQIM2bMwPXr1+Hi4gJ/f39YW1trvJ3Q0FDcuHEDW7duxbJly2BkZITx48dj9erVMDU1RX5+PuRyOWbOnKn8qr06ExMTjbbn5+eHd999FxKJBHZ2dvDy8oJEIgEA5ObmAgAcHBxUlnF0dFT5PCgoCPHx8fjss8+QmJiIFi1aYPjw4Vi3bl2tZcWgr6+P4OBg7NmzB5GRkdizZw+cnZ3h4+OjnOfu3bsYM2aM2ss87dq102h7dnZ2GDp0KPr27Yv169fjk08+gb+/v/Lzy5cvY+rUqThx4gSsra3Rt29feHp6atwuTTO3bt0aqampatdla2tb5/EMVF0uWbNmDSQSCSwtLdGlS5dat64+ru0Kly5dQuvWrevcHmM1cbHBWDWFhYUYN24c/Pz8cPLkSeUJ1s3NTeN16enpITY2FrGxsbh9+zZ27tyJuXPnwtLSEh9//DEsLS0hkUhgbm6ucrLIzc3F5cuXlZ0O66uuk47iGv4///yj8r6iE2D1a/wRERGIiIhAfn4+Dh48iLCwMMyaNQu7d+/WKE9jefHFFzFmzBjcvn0be/fuxdixY1U+t7a2hr6+vkrbCwsLG9SJUSqV4rXXXkN8fDyuXr0KV1dXAMD06dPxzz//IC0tDV26dAEAhISEICsrS6P1a5o5MDAQUVFRqKiogJ6e5n+2TU1NH1uQKDyq7Qp79+7FhAkTNM7Anm18Nwpj1WRmZqKwsBBTpkxRFhrHjh0TNELoiBEjsHDhQgBV/2ucPXs2OnXqhLS0NACAsbExevXqhd27d6OsrEy53OLFixttICgFDw8PuLi4ICkpSeVOl8TERJiamqJPnz4AgLCwMOWQ1JaWlpg0aRKGDBmizKwpa2vrBo/AOWzYMBgbG+ODDz5AZmYmXnzxRZXPBw0ahEOHDqmMiLl27Vr06dNH5T1Nvf7669DR0cGqVauU7509exbPPfecstC4c+cOfvzxR7XL19V2TTM7OzvD1dUV3377reD2aEJd24GqO4eOHz+OoKAgUXKwpwd/s8FYNW3btoWhoSE++ugjFBYW4s8//0RiYiIkEonGt1L6+PggNjYWRAR3d3ekpaUhLS0N77zzjnKe2NhYBAYGon///pg2bRquXr2KDRs2IDw8HEZGRo3WLolEgpUrV2Ls2LEYMmQIxo0bh0OHDmH//v349NNPYWpqCgDo06cPXnnlFZibm6N79+64cuUKDhw4gPHjxwvabkBAADZs2AAXFxfo6+sjOTlZ4+GuDQwMEBQUhNWrV8PR0bHWLaDR0dE4cOAAfH19MXPmTNy7dw/x8fEYP358rf+Va8LR0RHjxo3Dpk2bEBMTA1NTU3h5eeHbb79Fx44dUVBQgHXr1iEvLw9OTk4atV1I5piYGISFheGFF16AVCoV3C6hbQeA8PBwzJo1C5aWllrdPnsKPelOI4yJpb4jiO7bt488PT3JwMCAvLy8aPv27dS/f/9ad60Q1d1BtLy8nGJiYsjd3Z0MDQ3JycmJIiMjqaysTGW+w4cPU+/evcnAwIBcXV0pNjZWpYNffUDNCKKPaluXLl1IX1+fPDw81N5lsmbNGvL29iapVEq2trYUEhJC9+7dqzVffTqIymQymjFjBllbW5O+vj716tVL0Hq+++47AkBvvPGG2s9/++03GjJkCBkZGZGjoyNFRETU2blVHagZRfP06dMEgBISEoio6k6MgQMHkpGRETk5OdHixYspKiqKpFIp5eTkaNR2IZmDgoJowoQJJJfLiUj4CKJC2r527VpydHTU6A4fxhQkRGpG62GMMdbk5Ofno1evXnj77bcREhIi2nYvXryInj17IiUlRaVzLmP1xcUGY4w1I1euXEGrVq1gaGgo6nYvXLgALy8vUbfJnh5cbDDGGGNMq/huFMYYY4xpFRcbjDHGGNMqLjYYY4wxplVcbDDGGGNMq7jYYIwxxphWcbHBGGOMMa3iYoMxxhhjWsXFBmOMMca06v8B6ZPkWeUCC24AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 600x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(6, 5))\n",
    "# 绘制ROC曲线。\n",
    "plt.plot(fpr, tpr, label=\"ROC\")\n",
    "# 绘制（0， 0）与（1， 1）两个点的连线，该曲线（直线）为随机猜测的效果。\n",
    "plt.plot([0,1], [0,1], lw=2, ls=\"--\", label=\"随机猜测\")\n",
    "# 绘制（0， 0）， （0， 1）， （1， 1）三点的连线（两条线），这两条线构成完美的roc曲线（auc的值为1）。\n",
    "plt.plot([0, 0, 1], [0, 1, 1], lw=2, ls=\"-.\", label=\"完美预测\")\n",
    "plt.xlim(-0.01, 1.02)\n",
    "plt.ylim(-0.01, 1.02)\n",
    "plt.xticks(np.arange(0, 1.1, 0.1))\n",
    "plt.yticks(np.arange(0, 1.1, 0.1))\n",
    "plt.xlabel('False Positive Rate(FPR)', fontsize=13)\n",
    "plt.ylabel('True Positive Rate(TPR)', fontsize=13)\n",
    "plt.grid()\n",
    "plt.title(f\"ROC曲线-AUC值为{auc(fpr, tpr):.5f}\", fontsize=14)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
